15

Web アプリケーションを 5 日間実行するとパフォーマンスが低下する に投稿したように、ボトルネックを特定するにはどうすればよいですか? 、しばらく実行するとアプリケーションが遅くなるという問題があります。

VisualVM を実行して、異なる時間の間のスナップショットを作成しました。現在、アプリケーションは非常に遅いですが、ボトルネックを特定する方法がわかりません。お互いに大きな違いはありません。わずかに増加するのはヒープだけで、しばらくするとガベージ コレクションが正常に行われます。

誰かが私にいくつかの指針を与えることができますか?

スナップショット (アプリ) は次のとおりです。

[1] http://www.2shared.com/file/W4XJ6HtE/application-1314108550032.html

[2] http://www.2shared.com/fadmin/22521338/f512f97e/application-1314097232727.apps.html

ありがとうございました!

編集: よく見ると、CPU があまり使用されていないことに気付きました..そして、システムは本当に遅いです!

4

3 に答える 3

6

最初のステップとして、正確に何が遅いのかを特定することをお勧めします。いくつかのジョブをゆっくりと実行しますか? または、異なるクライアントからのジョブを処理する際のスループットが低いことを示していますか?

不足しているリソースは何ですか?

  • 外部サービス (データベースや RPC サーバーなど) を使用している場合は、常に応答時間をログに記録し、他の最適化手順を実行する前に確認してください。
  • プロセッサの能力が不足している可能性があります。CPU使用率を見てください。
  • メモリ不足かもしれません。この種の問題を検出するには、gc ロギングを使用します。それについて良い話題があります。
  • ハードドライブの速度が不足している可能性があります。iostat を使用して、HDD のパフォーマンスの限界を把握してください。
  • ネットワーク スループットが不足している可能性があります。ネットワーク チャネルの使用状況を確認します。
  • また、開いているファイルやネットワーク ソケットの数など、OS 固有の制限を使い果たす可能性もあります。すべての OS レベルの例外がログ ファイルに正しく報告されていることを確認してください。

どのリソースが不足しているか、プログラムのどの部分が不足しているかを特定したら、最適化するコードの一部を見つけようとすることができます。ランダムなツールを使用して、何を探すべきかを知らずにアプリケーションを実行するのは意味がありません。

私の個人的な経験から、プロファイラーで見つけることができる遅いメソッドがある場合は非常にまれです。ほとんどの場合、アルゴリズムのどこかで予期しない IO や同期が行われたか、データベース スキーマが正しくありません。

于 2011-08-23T15:53:33.603 に答える
5

実際、VisualVM より優れたツールがいくつかあります。

優れたプロファイラーである JProfiler を試すことができます (ただし有料)。

また、Netbeans プロファイラーを試すこともできます。これは無料で、うまく機能します。

VisualVM では、アプリケーションの実際の状態 (メモリと CPU の使用状況、JMX、ロードされたクラスなど) のみが表示されます。

于 2011-08-23T14:17:15.260 に答える
1

Windows ベースのシステムがウイルス スキャナーを調べている場合、その時点で実行されている更新スケジューラーは、すぐにアプリケーションの問題であるとは思いません。

ログがロールオーバーされ、デバッグが適切にフィルタリングされていることを確認して、ログが制御不能にならないようにしてください。

実行時間の長いクエリがないか、SQL スナップショットを確認します。DB 負荷と DB ヒープを確認します。

Visual VM をしばらく実行している場合は、いくつかのスレッドが作業を受け入れる準備ができていることを確認してください/接続は黄色 (アイドル) として表示されます。

暗いEclipse メモリ アナライザーのショット

スローダウンに気付いたらヒープ ダンプを取得し、アナライザーで実行します。

UNIX ベースのシステムの場合は、ファイル記述子 ulimit -a をチェックして、Java プロセスが上限に達していないことを確認してください。

サーバーの TCP NO Delay と Nagle 制限の設定を確認します。

于 2011-08-23T16:09:04.640 に答える