English | Japanese

"侍" とは

侍 はタブ表示できる GUI の tail ツールです。 標準出力・標準エラー出力をリダイレクトしたログファイルより Java のスレッドダンプのみを切り出して色分け表示したり、-verbosegcオプションによるログをグラフ表示したりできるため特に Java のトラブルシューティングに役立ちます。

システム要件

OS: JDK 1.4 以降の実行環境をサポートする Windows や Unix
JDKは以下のページからダウンロードできます。
https://java.sun.com/j2se/1.5.0/ja/download.html
検証済みの解析対象JVM: JDK 1.3.x,JDK 1.4.x,JDK5.0 準拠の Apple/BEA/Sun/HP/IBM 製JVM

起動方法

    侍のjarファイルはこちらよりダウンロードしていただけます。ダブルクリックするか、ターミナルから以下のコマンドで起動してください。

    $ java -jar samurai.jar

スレッドダンプの解析

  1. 初期画画面
  2. 侍 を起動すると画面2のようなウィンドウが表示されます。ログファイルをドロップすると監視が開始され、メッセージが追加される毎にリアルタイムで読み込まれます。


    画面2 初期画面

  3. スレッドダンプタブ
  4. ログファイル中にスレッドダンプを検出すると自動的にスレッドダンプタブ(画面3)が表示されます。


    画面3 スレッドダンプタブの表示

    スレッドダンプタブをクリックすると、解析結果が表示されます。 アイドル状態のスレッドは灰色で、ブロック(同期待ち)状態のスレッドは赤で表示されます。 解析結果にはテーブル表示(画面4)/全スレッド表示(画面5)/時系列表示(画面6)の3通りの表示があります。 多くの場合はテーブル表示でスレッドの使用状況を確認し、時系列表示でスレッドの動きを確認することで解析を進めます。 常に赤く表示されているスレッドや、全てのスレッドダンプにおいて同じ個所で停止しているスレッドは問題を抱えている可能性があります。


    画面4 テーブル表示


    画面5 全スレッド表示


    画面6 時系列表示

    ヒープ使用状況の解析

    Java は起動時に -verbose:gc というオプションをつけるとガベージコレクションを行った際にメッセージが標準エラー出力に記録されます。 メモリリークしていないか、ヒープが十分に確保されているかなどがこのメッセージからわかるのですが、文字で表現されているため解析が困難です。 侍にこのログを渡すと「メモリ」というタブが現れます。赤い線がガベージコレクション前の使用量、黄色い線がガベージコレクション後の使用量、グレーの線がコレクションに要した時間を表します。 表示中のグラフは Ctrl+C (Macでは Cmd+C) でコピーすることができます。

    画面7 メモリタブ

    CSV ファイルのグラフ化

    侍は CSV 形式のテキストファイルを渡すことで即座に内容をグラフ化してくれます。
    表示中のグラフは Ctrl+C (Macでは Cmd+C) でコピーすることができます。
    侍に渡したファイルが CSV 形式かどうかは拡張子で判断されます。

    画面8 CSVファイルのグラフ化

    ログのインクリメンタルサーチ機能

    侍は手放しでも便利ですが、スレッドダンプやヒープ使用状況の解析だけがとりえではありません。侍へドロップしたファイルはリアルタイムに監視され、ログが追加されると都度ログタブに表示されます。つまり Unix における tail -f filename と同等に利用できます。 また、ログ・スレッドダンプどちらのタブでも内容の検索を行うことが出来ます。いわゆるインクリメンタルサーチ機能で、キーボードをタイプした瞬間からキーワードがハイライトされます。キーワードを入力後は Ctrl+G(Mac では Cmd+G)または F3で次、Shift+Ctrl+G(Mac では Shift+Cmd+G)または Shift+F3 で前の候補がハイライトされます。 設定パネルより正規表現の使用・不使用、大文字小文字の区別・無視も設定できます。


    画面10 候補のハイライト

    ソースコード

    プロジェクトのソースコードがGitHubにあります。
    https://github.com/yusuke/samurai/

    メーリングリスト

    侍 に関する質問、バグレポート、リクエストなどありましたら以下のメーリングリストにお気軽にどうぞ。
    侍 - tail toolに参加
    メール アドレス:
    このグループにアクセス

    課題

    課題は GitHub Issue に登録してください。
    Jira へ

    ライセンス

    侍は Apache Software License 2.0 ライセンスに基づいてリリースされています。
    Samurai
    Copyright 2003-2020, Yusuke Yamamoto.
    
    Distributable under Apache Software License 2.0.
        See terms of license at apache.org.