十分な詳細が提供されていません。詳細情報が必要です:(
htop
またはを使用top
して、プロセスごとおよびスレッドごとのメモリと CPU の使用量を確認します。
CPU
4 コア システムで一定の 25% の CPU 使用率は、シングルコア アプリケーション/スレッドが使用できる唯一のコアで 100% の CPU を実行していることを示している可能性があります。
どのアプリケーションが CPU を消費していますか?
メモリー
20% メモリは ~1.6GB です。これは、Tomcat + mysql のみを実行しているアイドル状態のサーバーに期待するよりも少し多めです。は-Xms1024
、Tomcat に 1GB のメモリを事前に割り当てるように指示するので、それが説明されます。
tomcat の設定を-Xms512
およびに変更します-Xmx2048
。一部のユーザーを投げている間、Tomcat のメモリ使用量を監視します。2GB に達するまで増加し続けてフリーズする場合は、メモリ リークを示している可能性があります。
ディスク
df -h
ディスクの使用状況を確認するために使用します。パーティションがいっぱいになると、発生している問題が発生する可能性があります。
Filesystem Size Used Avail Usage% Mounted on
/cygdrive/c 149G 149G 414M 100% /
(この例で私のラップトップの容量が不足していることを発見した場合。あなたはそれを正しくやっています:D)
ログ
ログは素晴らしいです。しかし、ディスクをいっぱいにする悪い癖があります。ログのディスク使用量を確認します。新しいユーザーが接続したときに、ログが適切に書き込まれ、消去され、ローテーションされていますか? ログを消去すると問題は解決しますか? (消去する前に、将来の分析のためにどこかにコピーしてください)
そうでない場合。ログはまだ素晴らしいです。バグを追跡するのに役立つ良い習慣があります。Tomcat のログを確認します。ログ レベルをデバッグに設定することができます。ウェブサイトが死んだら最後に何が起こる? 有用なエラーメッセージはありますか? ユーザー接続は引き続き tomcat によって受信および受け入れられますか?
応用
25% の CPU は (mysql ではなく) tomcat に使用されると思います。Tomcat 自体は失敗しません。その上で実行されているアプリケーションは失敗しているに違いありません。アプリケーションを tomcat から削除してみてください (最終的には、代わりに hello world を配置できます)。あなたのアプリケーションがなくても、Tomcat は一晩中働き続けることができますか? おそらく可能ですが、その場合、障害はアプリケーションにあります。
アプリケーションで完全なデバッグ ログを有効にして、問題を追跡してみてください。デバッグ モードで Eclipse から直接実行し、ユーザーをスローします。同じように一貫して失敗しますか?
はいの場合は、Eclipse デバッガーで「一時停止」を押して、アプリケーションの動作を確認してください。各スレッドが現在実行しているコードとその呼び出しスタックを見てください。それを数回繰り返します。デッドロックや無限ループなどがある場合は、この方法で見つけることができます。
運が良ければ、問題はすでに見つかっているはずです。そうでない場合は、残念であり、アプリケーションの奥深くにある可能性のあるトリッキーなバグです。それは追跡するのが難しい場合があります。決意が成功へと導きます。頑張ってください=)