-1

私はここに来たばかりで、CPU 消費とマルチスレッドがあまり得意ではありません。しかし、私の Web アプリが CPU プロセスを大量に消費しているのはなぜでしょうか? 私のプログラムが行うことは、バックグラウンドで値を更新することです。これにより、ユーザーはデータの処理を待つ必要がなくなり、要求に応じて取得するだけで済みます。更新プロセスは、データを更新するために 5 秒ごとに 8 つのスレッドを起動するエグゼキュータ ライブラリを使用するスケジュールされたタスクです。

今、なぜ私のアプリケーションが CPU を大量に消費しているのか疑問に思っています。コードが悪いのか、サーバーのスペックが低いのか?(2 つのデータベースを備えた 2 つのコアと、私の Web アプリで実行される 1 つの主要なアプリケーション)

ご助力ありがとうございます。

4

2 に答える 2

1

CPU が実際に消費されている場所を調べるには、アプリケーションをプロファイリングする必要があります。Java にはいくつかの基本的なプロファイリング メソッドが組み込まれています。環境で許可されている場合は、組み込みの「hprof」コンパイラを実行できます。

Java -Xrunhprof ...

(実際には、おそらくいくつかの追加オプションを設定したいでしょう: 詳細については、Google の「hprof」を参照してください。)

後者の方が原則として簡単ですが、独自のプロファイリング ルーチンを追加する可能性について言及します。これは、より柔軟であり、別のプロファイラーを実行するのが面倒なサーブレット環境などで実行できるためです。

于 2012-05-10T15:22:20.443 に答える