LoginSignup
9
10

More than 5 years have passed since last update.

JBOSSチューニング

Last updated at Posted at 2014-06-22

JBOSSチューニングパラメータ

環境

  • Windows7
  • JBOSS EAP 6

standalone.conf.bat

:JAVA_OPTS_SET
set "JAVA_OPTS=-Xmn2G -Xms4G -Xmx4G -XX:MaxPermSize=512M"  
set "JAVA_OPTS=%JAVA_OPTS% -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman"  
set "JAVA_OPTS=%JAVA_OPTS% -verbose:gc -Xloggc:%JBOSS_HOME%\standalone\log\gc.log"  
set "JAVA_OPTS=%JAVA_OPTS% -XX:+PrintGCDetails -XX:+PrintGCTimeStamps"  
set "JAVA_OPTS=%JAVA_OPTS% -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=10M"  
set "JAVA_OPTS=%JAVA_OPTS% -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%JBOSS_HOME%\standalone\log\" 

パラメータ詳細

-Xmn

New領域サイズ

-Xms

ヒープ全体(New領域+Old領域)の初期値

-Xmx

ヒープ全体(New領域+Old領域)の最大値

-XX:MaxPermSize

Permanent 領域の最大値

-Djava.net.preferIPv4Stack=true

IPv4アドレス優先

-Djboss.modules.system.pkgs=org.jboss.byteman

バイトコード操作用

-verbose:gc

GCログ出力(簡易版)

-Xloggc:%JBOSS_HOME%\standalone\log\gc.log

GCログの出力と出力先の設定
このままだとファイル名が上書きされるのでタイムスタンプを付加できるようにしたい。
gc.log.`date +%Y%m%d%H%M%S`みたいな。でもDOSだとわかんない。

-XX:+PrintGCDetails

GCログを詳細に出力(New領域とJavaヒープそれぞれがどれだけ減ったか出力される)

-XX:+PrintGCTimeStamps

GCログにタイムスタンプ(Java起動時からの経過時間)を出力

-XX:+UseGCLogFileRotation

GCログのファイルローテーション

-XX:NumberOfGCLogFiles=5

5ファイルでローテーション
これ追加すると何故かメモリリークする

-XX:GCLogFileSize=10M

10Mでサイズローテーション
これ追加すると何故かメモリリークする

-XX:+HeapDumpOnOutOfMemoryError

OutOfMemoryError発生時にヒープダンプを出力

-XX:HeapDumpPath=%JBOSS_HOME%\standalone\log\

ヒープダンプ出力先の設定

今後決めておくべきパラメータ

-XX:SurvivorRatio

Eden領域のサイズをS0またはS1領域のサイズで割った値

-XX:MaxTenuringThreshold

マイナーGCの繰り返しによりOld領域へ配置される閾値

|-XX:TargetSurvivorRatio

Survivor領域がいっぱいと判断される使用率

クラスヒストグラムは定期的に取得する

jcmd <pid> GC.class_histgram

Javaヒープの多くを占めているクラスをテキスト形式で取得できる。

解析ツール


参考

9
10
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
9
10