JBoss AS7のJava VMオプションチューニング 2012年末版
JBoss Advent Calendar 2012の18日目のエントリ。前にJBoss AS 7.1.0のときのJava VMオプションを書いたのだけど、あれからほんのちょびっと変わってるので再度書いておこう。
主要なところは全然変わってないのだけど。
PRESERVE_JAVA_OPTS=true JAVA_OPTS="-server" JAVA_OPTS="$JAVA_OPTS -Xmn128m -Xms512m -Xmx512m -XX:MaxPermSize=256m -Xss512k" JAVA_OPTS="$JAVA_OPTS -Xverify:none" # do not use this in production JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC" JAVA_OPTS="$JAVA_OPTS -XX:+TieredCompilation" JAVA_OPTS="$JAVA_OPTS -XX:+UseCompressedOops" # 64bit only! # JAVA_OPTS="$JAVA_OPTS -Xloggc:gc.log.`date +%Y%m%d%H%M%S`" # enable in production JAVA_OPTS="$JAVA_OPTS -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+HeapDumpOnOutOfMemoryError" JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true" JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true" JAVA_OPTS="$JAVA_OPTS -Dorg.jboss.resolver.warning=true" JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS" JAVA_OPTS="$JAVA_OPTS -Djboss.server.default.config=standalone.xml" # JAVA_OPTS="$BYTEMAN_OPTS $JAVA_OPTS"
システムプロパティ群は一行が長めで見づらくなりがちなので、一行にひとつルールにした。あと、jboss系のシステムプロパティを下方に固めるようにした。
システムプロパティからRMIのgcIntervalを3600000(1時間)に設定している部分を消したのだけど、Java 6からこのシステムプロパティのデフォルト値が3600000に変更されたので、もう指定する意味がないので消した。Remove RMI gcInterval system props from default Java VM optionsというpull reqも飛ばしたのでAS 7.2系のリリースからは消えてる。
Byteman関連の設定はこんな感じ。Bytemanがリリースされて入れ替えるたびにバージョン文字列を書き換えたりするのがイヤなので、BYTEMAN_HOMEは実際にはシンボリックリンクにしてあってByteman最新版を指すようにしてある。
BYTEMAN_HOME=/path/to/byteman # BYTEMAN_RULE= BYTEMAN_OPTS="-javaagent:$BYTEMAN_HOME/lib/byteman.jar=listener:true,boot:$BYTEMAN_HOME/lib/byteman.jar" if [ "x$BYTEMAN_RULE" != "x" ]; then BYTEMAN_OPTS="${BYTEMAN_OPTS},script:$BYTEMAN_RULE" fi BYTEMAN_OPTS="$BYTEMAN_OPTS -Dorg.jboss.byteman.transform.all -Dorg.jboss.byteman.debug"