はじめに
アプリケーションの負荷を調べるためにこの記事を試したところ
負荷をかけているプログラムが見つかりました。
ただ、毎度コマンド打つのが大変なのでプログラムで自動でだせるようにしました。
githubで公開してありますのでどなたかのお役に立てれば幸いです。
ささっと作ってしまったのでとりあえず感満載でなんですがご了承ください・・・
動作確認済み環境
CentOS 6.7
java8
実行方法
実行
対象システム内で以下を実行してください。
実行した直下のディレクトリにlogディレクトリが作成されてそこにログが出力されます。
アプリケーションと同じ権限での実行が必要かと思います。
java -jar check-java-process.jar 50 30 packageName
https://github.com/ewai/check-java-process/tree/master/build/libs
ここに置いてあるjarを使ってもいいですし、
eclipseにgradle projectとしてインポートして微調整して使ってもいいと思います。
パラメーター
# | 設定値 | default | 尾行 |
---|---|---|---|
1 | CPU(%) | 50 | この設定値以上のプロセスを探す |
2 | 処理時間(秒) | 10 | この設定値以上のプロセスを探す |
3 | keyword | 無し | stacktraceにこのキーワードが入っているプロセスのみログに出力します |
プログラムで何をしているか
- javaのプロセスを探す
- 1のスレッドダンプを取得する
- 1の子プロセスを探す
- 2と3をマッチングして子プロセスごとのstacktraceを出す。
- パラメータの閾値を超えているプロセスのみにする。
- パラメータのキーワードを含むプロセスのみにする。
- ログに出力する。
以上です。