我正在寻找一个运行在JBoss上的Web应用程序中的瓶颈。 我有一个包含表单的模块,当从字段移动到字段时,我会使用Ajax对数据进行一些服务器端验证(这些验证需要不到1毫秒)。 这些模块用于两个单独的Web应用程序:
- 运行在Apache Tomcat应用服务器上的一个,其中每个验证大约需要200-400毫秒; - 第二个运行在JBoss 7.1.1上,其中每个验证大约需要3-5秒钟。问题在于我与Tomcat上使用的完全相同的模块,并且5秒钟的延迟真的不是一个选择。
我已经尽可能测量了时间,但是在运行在JBoss上的应用程序中找不到任何瓶颈。因此,我使用JProfiler和线程转储来查找问题。 下面是结果的屏幕截图。对我来说,它看起来像是jsf / richfaces的问题,但我不确定确切的原因以及如何修复它。
我正在使用:
- 已修补的jsf-impl-2.1.19-redhat-1的jboss 7.1.1 - Richfaces 4.2.3.Final - jboss-jsf-api_2.1_spec-2.1.19.Final-redhat-1
我尝试过的是:使用最新版本的richfaces,将jsf的viewstate更改为服务器端,启用部分状态保存。
下面是JProfiler的屏幕截图:
![](https://istack.dev59.com/Li624.webp)
从上面的屏幕截图中,我认为此处的性能问题在于javax.faces.view.facelets.ComponentHandler.applyNextHeader。 我无计可施,任何提示都将不胜感激。
- 运行在Apache Tomcat应用服务器上的一个,其中每个验证大约需要200-400毫秒; - 第二个运行在JBoss 7.1.1上,其中每个验证大约需要3-5秒钟。问题在于我与Tomcat上使用的完全相同的模块,并且5秒钟的延迟真的不是一个选择。
我已经尽可能测量了时间,但是在运行在JBoss上的应用程序中找不到任何瓶颈。因此,我使用JProfiler和线程转储来查找问题。 下面是结果的屏幕截图。对我来说,它看起来像是jsf / richfaces的问题,但我不确定确切的原因以及如何修复它。
我正在使用:
- 已修补的jsf-impl-2.1.19-redhat-1的jboss 7.1.1 - Richfaces 4.2.3.Final - jboss-jsf-api_2.1_spec-2.1.19.Final-redhat-1
我尝试过的是:使用最新版本的richfaces,将jsf的viewstate更改为服务器端,启用部分状态保存。
下面是JProfiler的屏幕截图:
![](https://istack.dev59.com/Li624.webp)
从上面的屏幕截图中,我认为此处的性能问题在于javax.faces.view.facelets.ComponentHandler.applyNextHeader。 我无计可施,任何提示都将不胜感激。