Java 11 を使用しているときに認識されない JVM GC オプション
プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Fisheye および Crucible は除く
要約
Java 11 を使用すると、以前 Tomcat に適用されていた一部の JVM パラメータが認識されなくなる。
環境
- Confluence
- Java 11 / OpenJDK 11
診断
Confluence で Java 11 を使用しているときに、以前インストールした Java 8 の JVM オプションがまだ使用されていると、アプリ起動せず、次のメッセージまたは類似のメッセージがログに出力されることがあります。
Unrecognized VM option 'UseGCLogFileRotation'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
原因
Java 11 では、Java 8 で使用されていたガベージ コレクション ロギングに使用されるものを含む一部の JVM フラグが削除されています。
これらが setenv.sh または setenv.bat で指定されている JVM フラグにまだ含まれていると、JVM を起動できません。
次のオプションは Java 11 では認識されないことがわかっています。
- -d64
- PrintGCTimeStamps
- PrintGCDateStamps
- PrintTenuringDistribution
- PrintGCCause
- PrintGCDetails
- UseGCLogFileRotation
- NumberOfGCLogFiles
- GCLogFileSize
Java 11 では、これらの GClog オプションは Xlog で処理されるようになりました。変換テーブルは以下を参照してください。
この変更の詳細については、次 のStackoverflow の記事を参照してください。
ソリューション
次の JVM オプションを setenv.sh または setenv.bat ファイルに追加するか (オプション 1)、GC オプションを新しいXlog 形式に変換します (オプション 2)。オプション 2 の場合、上記のリストから認識できない Java 11 用のオプションを必ず削除してください。
XX:+IgnoreUnrecognizedVMOptions
CATALINA_OPTS="-Xlog:gc*:file=$LOGBASEABS/logs/gc-%t.log:tags,time,uptime,level:filecount=5,filesize=2M ${CATALINA_OPTS}"