Java Glassfish v3在高负载下锁定,线程池问题?

Java Glassfish v3在高负载下锁定,线程池问题?,java,multithreading,load,glassfish,locking,Java,Multithreading,Load,Glassfish,Locking,当我们的glassfish v3服务器承受更高负载的压力时,机器会在一段时间后停止响应。这种情况发生在现场条件下,在高负载情况下有真实用户请求,约300名用户同时访问站点,但可以在一分钟内通过Sakege轻松复制: siege -t30m -c500 -d10 -i -f urlsInApplicationFrontEnd.txt 我尝试过调整max thread pool size参数(尝试了16到512之间的值),但除了减少请求时间或延长时间直到锁定一点之外,它似乎没有什么明显的效果 机器

当我们的glassfish v3服务器承受更高负载的压力时,机器会在一段时间后停止响应。这种情况发生在现场条件下,在高负载情况下有真实用户请求,约300名用户同时访问站点,但可以在一分钟内通过Sakege轻松复制:

siege -t30m -c500 -d10 -i -f urlsInApplicationFrontEnd.txt
我尝试过调整max thread pool size参数(尝试了16到512之间的值),但除了减少请求时间或延长时间直到锁定一点之外,它似乎没有什么明显的效果

机器停止响应(请求超时)后,可以通过更改线程池大小使其恢复活力,这似乎会重置一些内容:

asadmin set server.thread-pools.thread-pool.http-thread-pool.max-thread-pool-size=32
。许多线程都是“TIMED_WAITING on lock”,但我不太确定如何解释这一点


我希望有人能帮助解决这个问题-提前感谢

也许它依赖于其他人,检查其他外部/内部模块、jndi资源、bean等等……您的大多数线程似乎都在等待工作。。。你的“攻城”目标是哪个线程池?当系统没有响应时,它的CPU负载是多少?目标线程池是分配给http-listener-1的http线程池。系统负载介于1和2之间,所以没有应力(机器有8个磁芯)。在执行了一些应用程序调整以减少响应时间之后,我刚刚做了另一个测试。这个应用程序寿命更长,但崩溃也更严重——这次它不得不被杀死——9次。此外,堆栈跟踪只能使用jstack-F获得。