OpenJDK+SystemTapで
トラブル解析はここまでできる!
NTT OSSセンタ
応用技術ユニット Webグループ 末永恭正
2011/9/22
Javaでデバッグしにくい3つの場面
Javaアプリケーションで構築されたシステムの障害や性能問題が発生した場合、大半はデバッガやプロファイラ、ミドルウェアやサードパーティが提供するツールを用いることで解析できてしまいます。
しかし、以下のような状況ではJavaの世界からのアプローチがしにくく、通常のデバッグノウハウが使えないことがあります。
- プロセス再起動が許されないシステムでの情報取得がしたいとき
- 本番環境でしか発生せず、テスト環境でデバッグできない問題の場合
- GC(ガベージ・コレクション)ログ(-Xloggcなど)のように、javaコマンド起動オプションを与えなければ取得できない情報が必要な場合
- ソース変更が許されない場合に、特定状況下の情報を取得したいとき
- ある特定のメソッドなどが実行された瞬間のスレッドダンプやスタックトレースなどが必要な場合
- ソースの変更ができない、環境の制約などでデバッガが使用できない場合など
- 問題個所がアプリケーションなのか、JREなのか、OSなのか不明なとき
- 通信やファイルシステムなど、プラットフォームと密接に関係する部分での処理遅延やフリーズなど
- CPU使用率や(ネイティブレベルの)メモリ使用量が上昇しているが、Javaレベルで怪しいところが見当たらない
このような場合、Linux上のJavaシステムでは「OpenJDK+SystemTap」で突破口が見出だせることがあります。本企画では、これらの組み合わせによるJavaアプリケーションの解析手法について、5つの使用例を交えながら説明します。
JDKのオープンソース実装「OpenJDK」とは
「OpenJDK」は、Java SE仕様に準拠した唯一のJDKオープンソース実装です。現在JDK 6/7/8の3つのメジャーバージョンがJava SEのリファレンス実装としてソースコートが公開されており、オラクルだけでなく、世界中の開発者によるバグ報告やパッチ提供が可能になっています。
現在、FedoraやUbuntuをはじめとした、多くのメジャーLinuxディストリビューションでは、「IcedTea」プロジェクトのパッチを組み込んだ実行バイナリなどがパッケージ提供されており、OracleJDKとの違いを意識することなく開発・利用できます。
2010年に開催されたJavaOne 2010の基調講演では、OpenJDKはJavaのリファレンス実装を担い、オラクルが今後もOpenJDKコミュニティをサポートしていくとの発表がありました。
カーネル空間を動的にトレース「SystemTap」とは
「SystemTap」は、Linuxカーネル2.6から導入された、カーネル空間を動的にトレースするソフトウェアです。現在ではFedoraやUbuntuを始めとした多くのLinuxディストリビューションで配布されています。
バージョン0.6よりユーザー空間の「プローブ」(計測)機能(詳細は、後述)が試験的に実装され始め、カーネル空間とユーザー空間の動作状況を一元的に確認可能になりました。詳細は、以下の記事もご覧ください。
OpenJDK+SystemTapでできる6つの鬼凄
Solaris版JDKでは、以前より「DTrace」を用いたデバッグがサポートされていました。
IcedTeaプロジェクトでは、DTrace向けの「Probe」(プローブ)をLinuxのSystemTap向けに移植したスクリプト群「Tapset」が提供されており、OpenJDKの特徴の1つになっています。
これらのスクリプト、およびSystemTap本来の機能より、以下の6つのことが実現可能になります。次ページから、具体的に見ていきます。
- 数多くの情報を簡単に、自由に選択できる
- JavaVM内部イベントの検知
- JavaVMよりも下のレベルの状況把握
- JNI関数の呼び出し状況の把握
- 動的なアタッチ
- SystemTapの「guru」でカーネルレベルの解析
| Index | ||||||||
|
||||||||
Java on Linuxを鬼凄ネイティブデバッグ! バックナンバー 連載インデックスへ»
- 第1回 OpenJDK+SystemTapでできるトラブル解析の基礎
- 最終回 OpenJDK/SystemTapのデバッグが有効な5つの事例
| Java Solution全記事一覧 |
TechTargetジャパン
- Play 2.xのScala Templatesでビュー&フォーム操作 (2013/5/21)
Play 2.xでビューを表現するための機能「Scala Templates」と、フォームを用いてデータをやりとりする方法を解説します - 知らないと現場で困るバージョン管理システムの基礎 (2013/5/20)
構成管理に不可欠ともいえるバージョン管理について、ブランチ機能を中心に紹介。SubversionからGitへの移行事例も - Hud美さんと学ぶRedmine×Jenkinsの神アジャイル (2013/5/17)
継続的インテグレーションとJenkinsとは何か紹介し、RedmineやGitとの連携方法を解説します - Play frameworkのコントローラの使い方を理解する (2013/5/9)
PlayにおけるMVCパターンのコントローラについて、URIやHTTPメソッドなどの扱い方を含めて解説します
|
|
キャリアアップ
- - PR -
イベントカレンダー
- - PR -
転職/派遣情報を探す
**先週の人気講座ランキング**
〜 Android編 〜
ホワイトペーパー(TechTargetジャパン)
「ITmedia マーケティング」新着記事
2013年4月の検索市場――Googleは高水準を維持、MicrosoftとYahooは今一歩及ばず
米国における4月の検索件数約200億件のうち、Googleは133億件、Bingは35億件、Yahooが24...
浜松ホトニクス、オラクルのCMS「Oracle WebCenter Sites」でグローバルサイトを刷新――問い合わせ2割増、負荷5割軽減
日本オラクルは5月22日、光技術の研究/開発で世界的な評価を受けている浜松ホトニクスが...
第12回 カナダのマクドナルドが宣材写真の制作プロセスを公開。「不都合な真実」を自ら明るみにするその真意とは?
カナダのマクドナルドが2012年6月にYouTubeで公開した動画が再燃し、その再生回数が850万...






