JVM高階效能除錯

banq發表於2011-04-02

標準的JVM是配置為了高吞吐量,吞吐量是為了科學計算和後臺執行使用,而網際網路商業應用,更多是為追求更短的響應時間,更低的延遲Latency(說白了就是更快速度),文章延遲到處存在,它會降低你的銷售,使用者開啟網頁沒有快速響應,調馬走人,亞馬遜發現每100毫秒的延遲會損失1%的銷售量。

而垃圾回收機制一旦啟動就引發系統暫停,導致使用者請求後的響應時間延長,通常的JVM配置引數如下:

-Xms2g -Xmx2g -Xmn150m
-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing -XX:CMSIncrementalDutyCycleMin=10
-XX:CMSIncrementalDutyCycle=50 -XX:ParallelGCThreads=8
-XX:+UseParNewGC -XX:MaxGCPauseMillis=2000
-XX:GCTimeRatio=10 -XX:+DisableExplicitGC
<p>

作者發現使用-XX:+UseConcMarkSweepGC有效能上百分之40的降低,而網路上各種JVM除錯都推薦此配置。

使用下面配置,比UseConcMarkSweepGC 有百分之20的效能提升,且暫停時間在100微秒以下(10K 100執行緒)

-Xms2g -Xmx2g -Xmn150m
-XX:GCTimeRatio=2 -XX:ParallelGCThreads=8
-XX:+UseParNewGC -XX:MaxGCPauseMillis=2000
-XX:+DisableExplicitGC
<p>

垃圾回收機制

Advanced JVM Tuning for Low Pause | mindstorms

輔助作者觀點的另外一篇實戰案例JVM配置也是如上,該案例中幾乎使用了Oracle的記憶體資料庫,但是還是有問題,使用類似上述配置後得到效能提升:

http://www.tikalk.com/java/performance-tunning-case-study

XX:PermSize=512m -Xms5g -Xmx5g -XX:NewSize=756m -XX:MaxNewSize=756m -XX:SurvivorRatio=6 -XX:GCTimeRatio=2 -XX:ParallelGCThreads=8 -XX:+UseParNewGC -XX:MaxGCPauseMillis=2000 -XX:+DisableExplicitGC
<p>

[該貼被banq於2011-04-02 18:22修改過]

[該貼被banq於2011-04-02 18:25修改過]

相關文章