当我们的 glassfish v3 服务器承受更高负载的压力时,机器会在一段时间后停止响应。这发生在真实用户请求的实时条件下,在负载较高的情况下,大约 300 个用户同时访问该站点,但可以在一分钟内使用 siege 轻松复制:
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 等待锁定”,但我不太清楚如何解释这一点。
我希望有人可以帮助解决这个问题 - 在此先感谢!