View
4.796
Download
7
Embed Size (px)
DESCRIPTION
Citation preview
Java ドラッグレースチューニング
Takayoshi Kimura
Senior Software Maintenance EngineerGlobal Support Service, Red Hat
Java VM起動速度遅い
そんな幻想を!ぶち壊す
環境
● Dell Latitude E6320● 法人向けラップトップ● Intel(R) Core(TM) i7-2620M CPU @
2.70GHz● 16GB memory
環境
● Fedora 19 64bit● Linux 3.10.5-201.fc19.x86_64● java-1.7.0-openjdk-1.7.0.25-
2.3.12.3.fc19.x86_64
WildFly 8.0.0.Alpha4
started in2412ms
TunedWildFly
8.0.0.Alpha4
started in1059ms
?なにをしたのか
● 2412ms から 1059ms● 224% パフォーマンス向上
● 2 点● ふつうに JVM オプションの変更● ふつうそんなことやらねーよ、っていう荒技
Java VM オプション
● -client● 32bit のみ
● -server● -XX:+TieredCompilation● -XX:TieredStopAtLevel=1
Java VM オプション
● サーバアプリケーションでは最適化が抑制されるため長期的にはパフォーマンス不利● -client● -XX:TieredStopAtLevel=1
Java VM オプション
● TieredCompilation● Java 8 からデフォルトで有効● codecache の使用量が多くなる
Java VM オプション
● -Xverify:none● クラス検証無効化● テスト環境や本番環境では検証は有効にしておこう
デモ
● WildFly 8.0.0.Alpha4 の JVM オプションチューニング● 前 : 2400ms● 後 : 1200ms
!まだいける
荒技#!/bin/sh
# Example: $ find . -type f -name \*.jar | xargs -n1 fatjar
set -e
JARFILE=$(realpath $1)TMPDIR=/tmp/fatjar.tmp
echo "Fat $JARFILE"rm -rf $TMPDIRmkdir -p $TMPDIR(cd $TMPDIR; jar xf $JARFILE)if [ -f $TMPDIR/META-INF/MANIFEST.MF ]; then jar c0fm $JARFILE $TMPDIR/META-INF/MANIFEST.MF -C $TMPDIR .else jar c0f $JARFILE -C $TMPDIR .firm -rf $TMPDIR
デモ
● WildFly 8.0.0.Alpha4 に荒技適用● 前 : 1200ms● 後 : 1050ms
まとめソフトウェア チューニング前
(ms)チューニング後(ms)
WildFly 8.0.0.Alpha4 2400 1100
GlassFish 4.0.0 4000 1300
JBoss EAP 6.1.0 2200 1100
JBoss EAP 5.2.0 13800 7000
JRuby 1.7.4 1000 620
Clojure 1.5.1 800 390
Scala 2.10.2 460 410
Groovy 2.1.6 550 270
まとめ
● JVM オプション● -Xverify:none● -XX:+TieredCompilation● -XX:TieredStopAtLevel=1
● 非圧縮 jar