JVM設定¶
Liferay DXP/PortalにはJava JDK 8 または11が必要であり、特定のJVMオプション設定が必要です。 JDK 11に固有の推奨設定と推奨されるベースラインメモリ設定もあります。 ここでは、これらすべての設定について学習し、Tomcatスクリプトの例で説明します。
注釈
JDKを選択するには Liferay DXP互換性マトリクス を参照してください。
推奨されるJVM設定¶
タイプ |
設定 |
必須 |
説明 |
---|---|---|---|
ファイルのエンコーディング |
|
はい |
DXPでは、国際化をサポートするためにUTF-8ファイルエンコーディングが必要です。 |
タイムゾーン |
|
はい |
DXPは、すべての日付にGMTタイムゾーンを使用します。 |
4桁の年 |
|
いいえ |
JDK 11では、この設定で4桁の年を表示します。 JDK 9以降、Unicode Common Locale Data Repository(CLDR)がデフォルトのロケールプロバイダーです。 CLDRでは、4桁形式の年は提供されません( LPS-87191 を参照)。 この設定は、JDK 8のデフォルトのロケールプロバイダーを使用することで問題を回避します。 |
ヒープサイズ |
|
いいえ |
推奨される最大ヒープサイズは2GBです。 最小ヒープサイズを最大ヒープサイズ値に設定すると、ガベージコレクションが最小限に抑えられます。 |
Log4j |
|
はい ** |
Log4j の 2.15.0 以前のバージョンには、LDAP JNDI パーサーを介したリモートコード実行(RCE) の脆弱性があります。 詳細は、 LPS-143663 を参照してください。 ** Liferay DXP 7.4 GA1およびLiferay PORTAL 7.4 GA1~GA3では、セキュリティ上の脆弱性を解消するためにこの設定が必要です。 |
サポートされているアプリケーションサーバーのLiferayインストールの記事では、これらの設定を適用する場所が説明されています。 記事のリンクは次の通りです。
既知の問題:不正アクセスの警告¶
JDK 11では、次のような 不正アクセス 警告がログに出力されることがあります。
これらの警告は既知の問題( LPS-87421 )が原因で発生し、次のJVMオプションを追加することで解決できます。
--add-opens=java.base/java.awt.font=ALL-UNNAMED
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
--add-opens=java.base/java.net=ALL-UNNAMED
--add-opens=java.base/java.nio=ALL-UNNAMED
--add-opens=java.base/java.text=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
--add-opens=java.xml/com.sun.org.apache.xerces.internal.parsers=ALL-UNNAMED
Tomcatスクリプトの例¶
以下は、上記のJVMオプションの一部を示すTomcat setenv.sh
スクリプトです。
CATALINA_OPTS="$CATALINA_OPTS -Dfile.encoding=UTF-8 -Djava.locale.providers=JRE,COMPAT,CLDR -Djava.net.preferIPv4Stack=true -Duser.timezone=GMT -Xms2560m -Xmx2560m -XX:MaxNewSize=1536m -XX:MaxMetaspaceSize=768m -XX:MetaspaceSize=768m -XX:NewSize=1536m -XX:SurvivorRatio=7"
CATALINA_OPTS="$CATALINA_OPTS --add-opens=java.base/java.io=ALL-UNNAMED"
CATALINA_OPTS="$CATALINA_OPTS --add-opens=java.base/java.lang.reflect=ALL-UNNAMED"
Liferayは多くのアプリケーションサーバーをサポートしており、それらはすべて、選択したJVMオプションで構成することができます。