English | Japanese

"侍" とは

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

システム要件

OS: JDK 1.4 以降の実行環境をサポートする Windows や Unix
JDKは以下のページからダウンロードできます。
http://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

起動方法

侍 は以下の2種類どちらかの方法で起動させることができます。

  1. Java Web Start による起動
  2. ネットワーク経由で起動する方法です。
    Dockやスタートメニューにショートカットを作成できたり、バージョンアップ時には自動的にアップデートされたりなどの特徴があり、お勧めの起動方法です。
    J2SDK1.4.2 以上がインストールされている環境でブラウザから以下のアイコンをクリックすることで自動的にインストール、起動を行うことが出来ます。

    • 侍を起動:

    JRE がインストールされていない環境では ActiveX ベースのインストーラ をご利用ください(IE のみ)。
    初回起動時にはセキュリティ上安全でない、起動を勧めない旨のメッセージが表示されますが、気にせず「開始」を押して起動してください。
    これは侍がログファイルの読み取りのためローカルファイルシステムにアクセスする権限を得る必要があるためです。ただし、ファイルシステムへのアクセス権を得た Java Web Start アプリケーションは技術上、あなたの PC を乗っ取り、重大な損害をもたらすことが可能です。
    署名の有無にかかわらず信頼の出来ない Java Web Start アプリケーションを起動することは危険な行為であることを常に認識してください。
    コンピュータのセキュリティの設定によっては samurai.jnlp というファイルがダウンロードされるだけで侍が起動しない場合があります。
    その場合はダウンロードした samurai.jnlp をダブルクリックしてください。

    画面1 セキュリティ警告ダイアログ
  3. コマンドライン
  4. 侍は DOSプロンプトなどのターミナルから起動することもできます。
    インターネット接続がない環境などで起動する場合は、http://yusuke.homeip.net/samurai/ja/samurai.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 候補のハイライト

    ソースコード

    アーカイブにはソースコードが含まれています。
    プロジェクトのリポジトリには以下の URL からアクセスできます。
    http://yusuke.homeip.net/fisheye/browse/svn/samurai/trunk
    または以下のように subversion クライアントを使って最新のソースコードをチェックアウトすることもできます。

    svn checkout http://yusuke.homeip.net/svn/samurai/trunk samurai
    

    メーリングリスト

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

    バグ

    バグ、ロードマップなどについては Jira に登録してあります。
    Jira へ

    ライセンス

    侍は LGPL ライセンスに基づいてリリースされています。
    Samurai
    Copyright 2003-2008, Yusuke Yamamoto.
    
    Distributable under LGPL license.
    See terms of license at gnu.org.

    価格

    侍はどなたでも商標、非商用にかかわらず無償でご利用いただけます。
    もし侍があなたの生活を豊かにしてくれると感じたならば、以下の PayPal バッジから寄付していただくことも可能です。