- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们使用在 jBoss EAP 6.0 上运行的 JSF 2 开发了一个站点,我们的生产环境遇到了问题,基本上在一段时间后(当前用户水平约为 24 小时)应用程序使服务器平均负载上升到 100 并且服务器有点停止响应(它实际上并没有停止响应只是响应时间太长所以实际上是一样的)
现在,如果我们只是停止并再次启动 jBoss,应用程序就可以正常工作(所以这不是负载问题,而是随着时间的推移会发生更多的事情,负载越多,它发生的速度就越快)
为了测试这一点,我们创建了一个简单的应用程序(只是一场 war ),它基本上有一个登录页面,以及一个非常简单的页面,该页面呈现一些带有按钮的文本和一个简单的弹出窗口,也只呈现一些文本。
我们正在使用 jMeter(在另一台机器上运行)来强调这个简单的应用程序有 100 个并发线程(或者 jMeter 允许的并发线程)。在具有 i5 和 8gb ram(服务器使用 4gb)的 Mac 上运行的 jBoss EAP 在将平均负载升级到 50 并继续攀升之前持续大约 20 分钟,如果我使用 200 个线程而不是 100 个线程
我注意到的另一件事是,如果我开始使用新的 jBoss 实例进行测试,平均负载需要 X 时间才能升级,现在,如果我开始测试,让平均负载达到 50,然后停止该测试并开始新测试而不重新启动 jBoss,负载平均数在几秒内再次飙升至 50。
我们可以使用 Restful 服务对我们的服务施加压力而不会出现问题(并且没有平均负载峰值),因此我们猜测这不是一般的 jBoss 问题,而是更多的 JSF 问题。
我正在上传一些 Visual VM 的图像作为引用(您可以在其中看到 GC 定期完成并且看起来很好,并且 CPU 和负载平均升级得到抑制)和库版本的 pom.xml 的内容.
所以我的问题基本上是有人遇到过这个问题吗?这是正常行为吗?谁能想到发生这种情况的原因? (我们还创建了一个支持 RedHat 的票证,但我们希望社区中的某个人已经遇到过这个问题,或者可以帮助我们找到一种方法来找出发生了什么)
如果有人感兴趣,我可以提供示例应用程序的代码和jMeter测试脚本
TIA!
100 个线程的平均负载:
100 个线程的 CPU:
100 个线程的内存:
配置:
在不停止 jBoss 的情况下再次加载平均开始测试:
最后是pom.xml依赖:
<properties>
<project.version>1.0</project.version>
<codi.version>1.0.5</codi.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.build.timestamp.format>yyyyMMdd'T'HHmmss</maven.build.timestamp.format>
<jboss.home>${env.JBOSS_HOME}</jboss.home>
<jboss.domain>default</jboss.domain>
<arquillian.version>1.0.0.CR7</arquillian.version>
<slf4j.version>1.6.1</slf4j.version>
<weld.version>1.1.8.Final</weld.version>
<seam.version>3.1.0.Final</seam.version>
<rest.version>2.3.3.Final</rest.version>
<version.arquillian_core>1.0.0.CR7</version.arquillian_core>
<version.jbossas_7>7.1.0.Final</version.jbossas_7>
<jboss-javaee6-spec.version>1.0.0.Final</jboss-javaee6-spec.version>
<org.richfaces.bom.version>4.0.0.Final</org.richfaces.bom.version>
</properties>
<modelVersion>4.0.0</modelVersion>
<build>
<finalName>foo</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- PRoject Dependencies -->
<dependency>
<groupId>ar.com.easytech</groupId>
<artifactId>easyFaces-core</artifactId>
<version>1.1</version>
</dependency>
<!-- Web Dependencies -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<scope>compile</scope>
<version>1.6.2</version>
</dependency>
<!-- Seam -->
<dependency>
<groupId>org.jboss.seam.security</groupId>
<artifactId>seam-security</artifactId>
<scope>compile</scope>
<version>${seam.version}</version>
</dependency>
<dependency>
<groupId>org.apache.myfaces.extensions.cdi.bundles</groupId>
<artifactId>myfaces-extcdi-bundle-jsf20</artifactId>
<version>${codi.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.ocpsoft</groupId>
<artifactId>prettyfaces-jsf2</artifactId>
<scope>compile</scope>
<version>3.3.2</version>
</dependency>
<!-- PDF -->
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>fop</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>xmlgraphics-commons</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>avalon-framework</groupId>
<artifactId>avalon-framework</artifactId>
<version>4.1.5</version>
</dependency>
<dependency>
<groupId>org.apache.commons.io</groupId>
<artifactId>commons.io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>batik</groupId>
<artifactId>batik-bridge</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>batik</groupId>
<artifactId>batik-css</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>batik</groupId>
<artifactId>batik-util</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>apache-xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.5</version>
<scope>provided</scope>
</dependency>
</dependencies>
编辑
正如 maple_shaft 建议的那样,我在 glassfish 上进行了测试,得到了完全不同的结果,我配置了一个基本的 glassfish 服务器,只是更改了 Xmx Xms 和 NewSize 并使用 200 个线程运行了测试,平均负载从未超过 6(实际上它保持在5 我猜是负载的舒适区)
我正在添加结果图像并将相应地更新 RH 支持案例
平均负载
中央处理器
内存
最佳答案
您能否将 mojara 实现更改为 myfaces,因为使用 2.1.21 版 Mojarra 的应用程序存在一些性能问题。欲了解更多信息,请阅读 http://blog.oio.de/2013/05/06/jsf-performance-tuning/
关于java - JSF 应用程序平均负载上升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13920823/
我试图了解 JSF 实现如何识别用户的各种可能操作。在我放在一起的简单应用程序中,我在 login.xhtml 页面中配置了以下字段。 用户名 - 输入字段 密码 - 密码字段 登录按钮 取消按钮 登
我已经开始学习 JSF,我想知道在我们的类路径中包含什么 JAR 以开始使用 JSF。是jsf-api或 jsf-impl ?或者我们必须同时包含两者?如果两者都是,那么为什么它们不合并? 最佳答案
我是 java server faces (JSF) 的初学者,我需要将文本输入的内容传递到第二页以显示它,同样适用于第二页:我想将单选按钮值传递到第三页。我搜索并尝试了很多但没有成功。例如我试过
我有一个 JSF 页面。我的 CommandButton 操作方法值取决于 bean 变量值。 例子: Bean headerBean 具有可变的 actionValue,值为“someBean.do
我有两个 JSF 页面,假设 A 和 B。从这两个页面 A 和 BI 可以导航到页面 C。现在页面 C 中有一个按钮(确定按钮),单击它应该导航回 A 或 B,具体取决于从哪里(A 或 B)调用 C
我可以在没有 JSTL 标签的情况下使用 JSF 执行条件逻辑吗? 例如,我制作了一个复合组件,并想说明,如果指定了“id”属性,则定义“id”属性,但如果未指定“id”属性,则不要指定“id”属性。
我有一个应用程序,用户可以在其中从我的应用程序的欢迎页面动态切换语言环境。我看到早期的开发人员(在没有太多文档的情况下继承了代码)已经从 ViewHandler 覆盖了以下三个方法,并告诉我这是动态切
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
有没有一种方法可以在我的 JSF 2.0 应用程序中处理浏览器刷新事件,以便在浏览器刷新页面时将用户导航到欢迎页面? 这让我想到了另一个问题,即如何在托管 bean 中进行页面导航? 干杯, 最佳答案
我有两页。搜索页面是第一个接受用户输入的页面。第二页显示数据表中的结果集。第二页有 3 个面板,用于结果集、更新和在单个页面中创建。根据单击的按钮,我将面板呈现为真和假。 . . . . . .
由于我们在 Asp.Net 中有 comparevalidator,我们在 JSF 中有什么来验证两个字段的值是否相同?我想验证密码和确认密码字段。 最佳答案 不,这样的验证器在基本的 JSF 实现中
我想构建一个自定义 JSF 组件。现在我从 oracle 阅读了一些文档并看到了一些代码示例。问题是我有点困惑: 似乎有两种方法可以使用 JSF 2.0+ 构建自定义组件。据我了解,自 JSF 2.0
我遇到了与 user1598186 在他的问题中提到的相同的问题:p:commandButton doesn't call bean's method in an page 但是,没有给出解决方案(
这个问题在这里已经有了答案: Ajax update/render does not work on a component which has rendered attribute (1 个回答)
是否有内置机制可以有条件地重定向到另一个 View ?如果他/她已经登录,我希望用户从登录页面重定向到“主页”。 我已经有两种基本方法,但对于第一种我不知道如何实现,第二种是一种肮脏的解决方法。 添加
如何在 JSF 中格式化值 我需要格式化一个数字,如:12345.67 到 12,345.67 可以用模式吗? 最佳答案 尝试使用: 关于jsf - 用逗号格式化为数字 JSF,我们在Sta
根据this blog JSF 正在走向无状态。使用 JSF 的全部意义不在于它使保存和恢复状态成为一件苦差事。 JSF 成为无状态的有什么意义?您能否提供一个有用的示例。 最佳答案 首先,我想澄清
我读到某个地方(不再找到它),可以在资源包中使用EL Expresions,然后在不更改* .xhtml文件的情况下使用它。 some.text=#{someBean.stepsLeft} more
我想看一个简单的登录应用程序,不像this那么简单尽管。 我想要实现的是对 JSF 的工作原理的理解,我开发了很多 ASP.NET,您可以在其中隐藏代码,并且您可以在其中检查是否在登录时创建了 ses
如果#{myBean.birthdate}是java.util.Calendar或java.util.Date类型,我可以格式化吗this 在 EL 本身内部可能使用现有函数,其输出类似于 DateF
我是一名优秀的程序员,十分优秀!