LoginSignup
4
3

More than 5 years have passed since last update.

Oracle Application Container Cloud でJava Flight Recoderを使う際のTIPS

Posted at

Oracle Application Container Cloud でJavaアプリを動かす際、Java Flight Recorder(JFR)が利用できます。何も指定しない場合defaultテンプレートが使われますが、より詳細な情報を得たい場合のやり方を書きます

  • Oracle Application Container Cloudについてはこちら
  • Java Flight Recorderについてはこちら

その1. 組み込みの"profile"テンプレートを使う

Oracle Application Container Cloudでは、Javaアプリはzipで固めてdeployします。zipファイルの中にはmanifest.jsonというファイルを配置します。書式はこんな感じです
{
"runtime": {
"majorVersion": "8"
},
"command": "java -jar hoge.jar"
}

※majorVersion=JDKのバージョン, command=アプリの起動コマンド、です

commnadの記述をこう変えると、より詳細な情報が取得できる"profile"テンプレートが適用されます
"command": "java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=settings=profile -jar hoge.jar"

その2. 自作テンプレートを使う

profileテンプレート、及びdefaultテンプレートは$JDK_HOME/jre/lib/jfr/に実体があります(default.jfc, profile.jfc)。これをカスタマイズして指定することも可能です
- JFRのテンプレートについてはこちら
- 例えばExceptionを全部記録したい場合、java/exception_throw句を以下のように変えます
<event path="java/exception_throw">
<setting name="enabled" control="http://www.oracle.com/hotspot/jvm/enable-exceptions">true</setting>
<setting name="stackTrace">true</setting>
</event>

manifest.json中のcommnad句は以下のようにします
"command": "java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=settings=$APP_HOME/hoge.jfc -jar hoge.jar"

カスタマイズしたhoge.jfcファイル、及び修正したmanifest.jsonを再度zipに詰めて、再デプロイすれば完成です(zip内の配置はこんな感じ)

hoge.zjp
|- hoge.jar
|- manifest.json
|- hoge.jfc

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3