我正在使用 Java EE 6、EJB 3.1、CDI、JSF 2 和 Hibernate 在 JBoss 7.1.1 上运行应用程序。
我如何知道一个 Java EE AS 的独立实例是否足以处理所有请求,或者是否需要一个 AS 的多个实例?
JBoss 7.1.1 每秒应该能够处理多少个请求(在一般情况下)?
一年中有一次请求数量显着增加,而服务器(当时是 JBoss 4.2.3)出现故障。而且我不能说这是由于应用程序的设计不佳还是仅仅由于大量的请求。
我正在使用 Java EE 6、EJB 3.1、CDI、JSF 2 和 Hibernate 在 JBoss 7.1.1 上运行应用程序。
我如何知道一个 Java EE AS 的独立实例是否足以处理所有请求,或者是否需要一个 AS 的多个实例?
JBoss 7.1.1 每秒应该能够处理多少个请求(在一般情况下)?
一年中有一次请求数量显着增加,而服务器(当时是 JBoss 4.2.3)出现故障。而且我不能说这是由于应用程序的设计不佳还是仅仅由于大量的请求。
尝试找出是否有任何特定请求主要在一年中的那个时候执行。
然后,您可以在您的 jboss 实例中附加jvisualvm的同时,为特定请求运行一些jmeter测试(模拟每秒对应用程序的多个请求) 。
您可以使用许多不同的 jvm 内存设置(例如-Xmx512m -XX:MaxPermSize=512m )尝试这些测试,如果可能的话,使用不同数量的处理器(如果您在虚拟化环境中更容易)
假设你的应用程序可以同时处理很多请求,standalone-ha.xml的urn:jboss:domain:web:1.1子系统中有一个设置 可以增加 jboss 可以处理的最大并发连接数:
<connector name="http" protocol="HTTP/1.1" max-connections="10000" scheme="http" socket-binding="http"/>
在urn:jboss:domain:datasources:1.0部分中为您的数据源找到最佳的 max-pool-size / blocking-timeout-millis 值也可以防止 jboss 在您的请求增加时失败。
结合您从上述测试中获得的结果,您可以决定在单独的节点中运行额外的 jboss 实例。
没有简单的常数(42 不是所有的答案)。它取决于很多因素。与数据库的请求连接很长。在后台处理。
你应该阅读负载压力测试(http://en.wikipedia.org/wiki/Load_testing)。您可以使用 JMeter (http://jmeter.apache.org/) 或其他工具创建负载测试,并模拟查看时间和平均时间。尝试模拟您的请求,就像您可以模拟生产请求一样。