Java プロセスに対していくつかのJMeterテストを実行して、Web アプリケーションの負荷 (500 人以上のユーザー) の応答性を判断しています。JMeter は、各 Web リクエストの応答時間を提供します。また、X 秒ごとに Tomcat Manager に ping を実行するスクリプトを作成しました。これにより、JVM ヒープの現在のサイズが取得されます。
サーバーで Tomcat が使用している CPU の割合の統計を収集したいと考えています。次のようにシェルスクリプトで実行しようとしましたps
:
PS_RESULTS=`ps -o pcpu,pmem,nlwp -p $PID`
...X 秒ごとにコマンドを実行し、結果をテキスト ファイルに追加します。(疑問に思っている人のために、pmem
= % mem usage とnlwp
はスレッド数です)
ただし、これにより、「CPU使用率の%」の定義が希望とは異なることがわかりました-psのマンページによると、次のようにpcpu
定義されています。
「##.#」形式のプロセスの CPU 使用率。これは、使用された CPU 時間をプロセスの実行時間 (CPU 時間/リアルタイムの比率) で割ったもので、パーセンテージで表されます。
言い換えれば、プロセスの存続期間pcpu
中のプロセスの CPU 使用率を示します。
X 秒ごとにサンプルを取得したいので、現在の時点でのみプロセスの CPU 使用率を収集したいと思いますtop
。
シェルスクリプト内からこれを収集するにはどうすればよいですか?