Glassfish v3 サーバーに高い負荷をかけて負荷をかけると、しばらくするとマシンが応答しなくなります。これは、約 300 人のユーザーが同時にサイトにアクセスする高負荷の状況で、実際のユーザー リクエストを伴うライブ条件で発生しますが、1 分以内に 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 Waiting on lock」ですが、これを解釈する方法がよくわかりません。
誰かが問題に対処するのを手伝ってくれることを願っています - 事前に感謝します!