JMeterログファイル分析
JMeterログファイルの理解
各負荷エンジンからキャプチャされたJMeterログファイル(jmeter.log)は、JMeterランタイムからの詳細な診断出力を提供します。JMeterコアとプラグインによって生成されるINFO、WARN、ERRORメッセージが含まれており、設定の問題、プラグインエラー、予期しないランタイム動作のトラブルシューティングに不可欠です。
JMeterログの内容
ログの各行は次のパターンに従います:<timestamp> [<thread-name>] <level> <logger> – <message>
timestamp ログエントリが書き込まれた日時(例:2025-04-23 07:57:24,894)。
thread-name ログを生成したJMeterスレッドまたはコンポーネント(例:StandardJMeterEngine)。
level ログレベル:INFO、WARN、ERROR、またはDEBUG(有効な場合)。
logger メッセージを発行しているJavaクラスまたはパッケージ(例:org.apache.jorphan.reflect)。
message イベント、警告、エラーを説明する実際の診断テキスト。
JMeterログへのアクセスと使用方法
- 「Logs」に移動 テスト結果ダッシュボードで、Logsタブを選択し、テストファイルパネルでJMeter log fileを選択します。
- スクロールと検索
中央パネルにログ内容がストリーミングされます。ブラウザの検索を使用して
ERRORやWARNなどのキーワードにジャンプします。 - オフライン分析用にダウンロードJMeter log fileの横にあるダウンロードアイコンをクリックして、完全な
jmeter.logを保存して詳細に調査します。
よくあるログエントリ
- INFO StandardJMeterEngine – Running the test! テスト実行の開始を示します。
- WARN ConfigTestElement – Missing property 'foo' JMeterプロパティの欠落または不正を示します。
- ERROR HTTPSamplerProxy – Non HTTP response code: 500 サンプラーによって表面化されたHTTPエラーを示します。
- INFO JOrphanUtils – Will scan jar ... プラグインとライブラリのロードメッセージ(正常)。
- ERROR GC – OutOfMemoryError JVMまたはプラグインのメモリ問題。ヒープの増加またはスレッドの削減を検討してください。
ログを使ったトラブルシューティング
- スレッドの起動失敗
「Running the test!」行の直後の
ERRORエントリを探します。多くの場合、スレッドグループの設定ミスまたはプラグインの欠落です。 - プラグインのロードエラー
ClassNotFoundExceptionやNoClassDefFoundErrorメッセージは、リモートエンジンでのJARのロード失敗を示します。 - リソース制限
メモリ不足やファイルハンドルの警告は、JVMオプション(
-Xmx、-XX:MaxFileDescriptor)の調整が必要であることを示します。 - レイテンシ&タイムアウト警告 HTTPサンプラーのタイムアウトとソケット例外は、LoadFocusエージェントとターゲット間のネットワーク接続の問題を明らかにします。
ベストプラクティス
- デバッグログの選択的有効化
ログが極端に大きくなるのを避けるため、
log_level.jmeter=DEBUGは限定的なテストにのみ設定してください。 - クロックの同期 すべての負荷エージェントがNTPを使用して、分散ログ間でタイムスタンプが整合するようにします。
- 他のビューとの相関 ログのタイムスタンプをEngine HealthとErrorsチャートと照合して、スパイクや障害の根本原因を特定します。
- ログのアーカイブ
各テスト実行の完全なフォレンジック追跡のために、
jmeter.logをJTL結果とともに保存します。
まとめ
LoadFocusのJMeterログファイルは、ハイレベルメトリクスでは見えないJVMエラー、設定警告、プラグインの問題を表面化するための重要なトラブルシューティングツールです。これらのログを定期的に確認しアーカイブすることで、捉えにくいテスト実行の問題を診断し、信頼性が高く再現可能な負荷テストキャンペーンを維持できます。