JFR のスタックトレースはデフォルトで64
JFR では Stacktrace を取得する処理があるが、デフォルトのスタック取得深度は 64 である。 現代のウェブアプリケーションではフレームワーク側で64スタックぐらい余裕で消費しているので、これは増加させる必要がある。あまり大きく設定すると、メモリを圧迫する可能性があるので、できるだけ小さく、かつ各アプリケーションで必要なぶんなスタックの深さを指定するのが良い。
- https://docs.oracle.com/javase/jp/14/jfapi/printing-event-stack-trace.html
- https://stackoverflow.com/questions/32118646/how-to-avoid-truncated-stack-traces-with-java-flight-recorder
- https://docs.oracle.com/javacomponents/jp/jmc-5-5/jfr-runtime-guide/about.htm
datadog の agent では、256 を設定させている。 https://docs.datadoghq.com/ja/tracing/profiler/enabling/java/
JFR の設定ファイルの中で、stackdepth を指定できる方法がないかと調べたが見当たらない。
2016 年の報告では、G1GCのときに stachdepth を深くしたら遅くなったという報告があるが、今だったらカイゼンされてたりしないのかなぁ。と思ったりする。 https://blogs.oracle.com/poonam/g1-and-flight-recorders-xx:flightrecorderoptionsstackdepth-option
Published: 2021-10-05(Tue) 01:04