Javaアプリケーションで構築されたシステムの障害や性能問題が発生した場合、大半はデバッガやプロファイラ、ミドルウェアやサードパーティが提供するツールを用いることで解析できてしまいます。
しかし、以下のような状況ではJavaの世界からのアプローチがしにくく、通常のデバッグノウハウが使えないことがあります。
このような場合、Linux上のJavaシステムでは「OpenJDK+SystemTap」で突破口が見出だせることがあります。本企画では、これらの組み合わせによるJavaアプリケーションの解析手法について、5つの使用例を交えながら説明します。
「OpenJDK」は、Java SE仕様に準拠した唯一のJDKオープンソース実装です。現在JDK 6/7/8の3つのメジャーバージョンがJava SEのリファレンス実装としてソースコートが公開されており、オラクルだけでなく、世界中の開発者によるバグ報告やパッチ提供が可能になっています。
現在、FedoraやUbuntuをはじめとした、多くのメジャーLinuxディストリビューションでは、「IcedTea」プロジェクトのパッチを組み込んだ実行バイナリなどがパッケージ提供されており、OracleJDKとの違いを意識することなく開発・利用できます。
2010年に開催されたJavaOne 2010の基調講演では、OpenJDKはJavaのリファレンス実装を担い、オラクルが今後もOpenJDKコミュニティをサポートしていくとの発表がありました。
「SystemTap」は、Linuxカーネル2.6から導入された、カーネル空間を動的にトレースするソフトウェアです。現在ではFedoraやUbuntuを始めとした多くのLinuxディストリビューションで配布されています。
バージョン0.6よりユーザー空間の「プローブ」(計測)機能(詳細は、後述)が試験的に実装され始め、カーネル空間とユーザー空間の動作状況を一元的に確認可能になりました。詳細は、以下の記事もご覧ください。
Solaris版JDKでは、以前より「DTrace」を用いたデバッグがサポートされていました。
IcedTeaプロジェクトでは、DTrace向けの「Probe」(プローブ)をLinuxのSystemTap向けに移植したスクリプト群「Tapset」が提供されており、OpenJDKの特徴の1つになっています。
これらのスクリプト、およびSystemTap本来の機能より、以下の6つのことが実現可能になります。次ページから、具体的に見ていきます。
Copyright © ITmedia, Inc. All Rights Reserved.