达到 maxThreads 限制时 JBOSS 挂起

标签 jboss jvm struts jboss5.x server.xml

我有一个在 JBOSS AS 5.1 中运行的 Struts 1.3 应用程序。我们在 server.xml 文件中为 HTTP 连接器设置了 2000 个 HTTP 线程,并在 run.conf 文件中将 JVM 堆中大约 2GB 的 RAM 分配给了 JBOSS。系统总共有 4GB RAM,剩余 RAM 正在被其他应用程序使用。

每当我的系统遇到超过 2000 个并发请求时,Jboss 就会挂起并停止工作。我没有在控制台上遇到异常或任何类型的内存不足错误,它只是挂起。

如何解决这个问题?我应该把 mod_cluster 或者其他东西放在 JBOSS 前面吗?或者我应该为连接器分配更多线程,如果是这样,我如何确定 HTTP 连接器上的内存和 maxThreads 之间的使用比例?

最佳答案

2000 是一个非常高的数字。如果您确实需要它处理 2000 个并发请求,则需要设置多个实例并在实例之间均匀分配负载。你可以在jboss前面设置一个负载均衡器或者apache+mod_jk。

使用多少内存取决于应用程序。使用多少个实例取决于实例在负载下的性能以及是否可以获得所需的响应时间。

关于达到 maxThreads 限制时 JBOSS 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9683511/

相关文章:

java - 我对Struts中FormBean和DTO的使用感到困惑

Java - 高CPU使用率

java - 不同应用服务器上 JNDI 中的自定义资源

Spring MVC : I set the default page but the spring always should me the configuration files do not find

ssl - 如何在 JBoss EAP 6.1 中更改 HTTPS 连接的 SSL 版本

java - 如何用 Java 编写正确的微基准测试?

java慢: entropy related issue

java permGen内存不足错误tomcat-liferay服务器

jvm - 为什么 GraalVM (SubstrateVM) native 图像在运行时使用的内存比相应的 JIT 构建少得多?

java - 从 Action 的execute() 方法创建新的 Struts Action 实例有问题吗?