久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Resin 配置優(yōu)化

 用勿龍潛 2011-03-09

1.1. 堆大小設(shè)置

JVM 中最大堆大小有三方面限制:

相關(guān)操作系統(tǒng)的數(shù)據(jù)模型(32-bt還是64-bit)限制;

系統(tǒng)的可用虛擬內(nèi)存限制,;

系統(tǒng)的可用物理內(nèi)存限制。

32位系統(tǒng)下,,一般限制在1.5G~2G,;64為操作系統(tǒng)對(duì)內(nèi)存無限制。

1.2. 典型設(shè)置:

java -Xmx3550m -Xms3550m -Xmn2g-Xss128k
-Xmx3550m:設(shè)置JVM最大可用內(nèi)存為3550M,。
-Xms3550m:設(shè)置JVM最小內(nèi)存為3550m,。此值可以設(shè)置與-Xmx相同,以避免每次垃圾回收完成後JVM重新分配內(nèi)存,。
-Xmn2g:設(shè)置年輕代大小為2G,。整個(gè)JVM內(nèi)存大小=年輕代大小 年老代大小

所以增大年輕代後,將會(huì)減小年老代大小,。此值對(duì)系統(tǒng)性能影響較大,,Sun官方推薦配置為整個(gè)堆的3/8,。
-Xss128k:設(shè)置每個(gè)線程的堆棧大小。JDK5.0以後每個(gè)線程堆棧大小為1M,,以前每個(gè)線程堆棧大小為256K,。根據(jù)應(yīng)用的線程所需內(nèi)存大小進(jìn)行調(diào)整。在相同物理內(nèi)存下,,減小這個(gè)值能生成更多的線程,。但是操作系統(tǒng)對(duì)一個(gè)進(jìn)程內(nèi)的線程數(shù)還是有限制的,不能無限生成,,經(jīng)驗(yàn)值在3000~5000左右,。

java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0
-XX:NewRatio=4:設(shè)置年輕代(包括Eden和兩個(gè)Survivor區(qū))與年老代的比值(除去持久代)。設(shè)置為4,,則年輕代與年老代所占比值為14,,年輕代占整個(gè)堆棧的1/5
-XX:SurvivorRatio=4:設(shè)置年輕代中Eden區(qū)與Survivor區(qū)的大小比值。設(shè)置為4,,則兩個(gè)Survivor區(qū)與一個(gè)Eden區(qū)的比值為2:4,,一個(gè)Survivor區(qū)占整個(gè)年輕代的1/6
-XX:MaxPermSize=16m:設(shè)置持久代大小為16m
-XX:MaxTenuringThreshold=0:設(shè)置垃圾最大年齡,。如果設(shè)置為0的話,,則年輕代對(duì)象不經(jīng)過Survivor區(qū),直接進(jìn)入年老代,。對(duì)於年老代比較多的應(yīng)用,,可以提高效率。如果將此值設(shè)置為一個(gè)較大值,,則年輕代對(duì)象會(huì)在Survivor區(qū)進(jìn)行多次複制,,這樣可以增加對(duì)象年輕代的存活時(shí)間,增加在年輕代即被回收的概,。

1.3. 回收器選擇

JVM給了三種選擇:串行收集器,、並行收集器、並發(fā)收集器,,但是串行收集器只適用於小數(shù)據(jù)量的情況,,所以這裏的選擇主要針對(duì)並行收集器和並發(fā)收集器。默認(rèn)情況下,,JDK5.0以前都是使用串行收集器,,如果想使用其他收集器需要在啟動(dòng)時(shí)加入相應(yīng)參數(shù)。JDK5.0以後,,JVM會(huì)根據(jù)當(dāng)前系統(tǒng)配置進(jìn)行判斷,。 

1.3.1. 吞吐量?jī)?yōu)先的並行收集器

如上文所述,並行收集器主要以到達(dá)一定的吞吐量為目標(biāo),適用於科學(xué)技術(shù)和後臺(tái)處理等,。
典型配置: 

java -Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20
-XX:+UseParallelGC:選擇垃圾收集器為並行收集器,。此配置僅對(duì)年輕代有效。即上述配置下,,年輕代使用並收集,,而年老代仍舊使用串行收集,。

-XX:ParallelGCThreads=20:配置並行收集器的線程數(shù),,即:同時(shí)多少個(gè)線程一起進(jìn)行垃圾回收。此值最好配置與處理器數(shù)目相等,。

java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20-XX:+UseParallelOldGC-XX:+UseParallelOldGC

配置年老代垃圾收集方式為並行收集,。JDK6.0支持對(duì)年老代並行收集。

java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100-XX:MaxGCPauseMillis=100:設(shè)置每次年輕代垃圾回收的最長(zhǎng)時(shí)間,,如果無法滿足此時(shí)間,,JVM會(huì)自動(dòng)調(diào)整年輕代大小,以滿足此值,。

java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC  -XX:MaxGCPauseMillis=100-XX:+UseAdaptiveSizePolicy
-XX:+UseAdaptiveSizePolicy:設(shè)置此選項(xiàng)後,,並行收集器會(huì)自動(dòng)選擇年輕代區(qū)大小和相應(yīng)的Survivor區(qū)比例,以達(dá)到目標(biāo)系統(tǒng)規(guī)定的最低相應(yīng)時(shí)間或者收集頻率等,,此值建議使用並行收集器時(shí),,一直打開。

1.3.2. 響應(yīng)時(shí)間優(yōu)先的並發(fā)收集器

如上文所述,,並發(fā)收集器主要是保證系統(tǒng)的響應(yīng)時(shí)間,,減少垃圾收集時(shí)的停頓時(shí)間。適用於應(yīng)用服務(wù)器,、電信領(lǐng)域等,。
典型配置: 

java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:ParallelGCThreads=20-XX:+UseConcMarkSweepGC -XX:+UseParNewGC-XX:+UseConcMarkSweepGC:設(shè)置年老代為並發(fā)收集。測(cè)試中配置這個(gè)以後,,-XX:NewRatio=4的配置失效了,,原因不明。所以,,此時(shí)年輕代大小最好用-Xmn設(shè)置,。
-XX:+UseParNewGC:設(shè)置年輕代為並行收集??膳cCMS收集同時(shí)使用,。JDK5.0以上,JVM會(huì)根據(jù)系統(tǒng)配置自行設(shè)置,,所以無需再設(shè)置此值,。

java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseConcMarkSweepGC-XX:CMSFullGCsBeforeCompaction=5-XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction:由於並發(fā)收集器不對(duì)內(nèi)存空間進(jìn)行壓縮、整理,所以運(yùn)行一段時(shí)間以後會(huì)產(chǎn)生碎片,,使得運(yùn)行效率降低,。此值設(shè)置運(yùn)行多少次GC以後對(duì)內(nèi)存空間進(jìn)行壓縮、整理,。-XX:+UseCMSCompactAtFullCollection:打開對(duì)年老代的壓縮,。可能會(huì)影響性能,,但是可以消除碎片

輔助信息

JVM提供了大量命令行參數(shù),,打印信息,供調(diào)試使用,。主要有以下一些: 

-XX:+PrintGC輸出形式

[GC 118250K->113543K(130112K), 0.0094143 secs] 

[Full GC 121376K->10414K(130112K), 0.0650971 secs]

-XX:+PrintGCDetails輸出形式

[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs] 

[GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs]

-XX:+PrintGCTimeStamps-XX:+PrintGCPrintGCTimeStamps可與上面兩個(gè)混合使用
輸出形式:11.851: [GC 98328K->93620K(130112K), 0.0082960 secs]

-XX:+PrintGCApplicationConcurrentTime:打印每次垃圾回收前,,程序未中斷的執(zhí)行時(shí)間??膳c上面混合使用
輸出形式:Application time: 0.5291524 seconds

-XX:+PrintGCApplicationStoppedTime:打印垃圾回收期間程序暫停的時(shí)間,。可與上面混合使用
輸出形式:Total time for which application threads were stopped: 0.0468229 seconds

-XX:PrintHeapAtGC:打印GC前後的詳細(xì)堆棧信息
輸出形式:
34.702: [GC {Heap before gc invocations=7:
 def new generation   total 55296K, used 52568K [0x1ebd0000, 0x227d0000, 0x227d0000)
eden space 49152K,  99% used[0x1ebd0000, 0x21bce430, 0x21bd0000)
from space 6144K,  55% used[0x221d0000, 0x22527e10, 0x227d0000)
  to   space 6144K,   0% used [0x21bd0000, 0x21bd0000, 0x221d0000)
 tenured generation   total 69632K, used 2696K [0x227d0000, 0x26bd0000, 0x26bd0000)
the space 69632K,   3% used[0x227d0000, 0x22a720f8, 0x22a72200, 0x26bd0000)
 compacting perm gen  total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000)
   the space 8192K,  35% used [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000)
    ro space 8192K,  66% used [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000)
    rw space 12288K,  46% used [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000)
34.735: [DefNew: 52568K->3433K(55296K), 0.0072126 secs] 55264K->6615K(124928K)Heap after gc invocations=8: def new generation   total 55296K, used 3433K [0x1ebd0000, 0x227d0000, 0x227d0000)
eden space 49152K,   0% used[0x1ebd0000, 0x1ebd0000, 0x21bd0000)
  from space 6144K,  55% used [0x21bd0000, 0x21f2a5e8, 0x221d0000)
  to   space 6144K,   0% used [0x221d0000, 0x221d0000, 0x227d0000)
 tenured generation   total 69632K, used 3182K [0x227d0000, 0x26bd0000, 0x26bd0000)
the space 69632K,   4% used[0x227d0000, 0x22aeb958, 0x22aeba00, 0x26bd0000)
 compacting perm gen  total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000)
   the space 8192K,  35% used [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000)
    ro space 8192K,  66% used [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000)
    rw space 12288K,  46% used [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000)
}
, 0.0757599 secs]

-Xloggc:filename:與上面幾個(gè)配合使用,,把相關(guān)日志信息記錄到文件以便分析,。

常見配置匯總

堆設(shè)置 

§ -Xms:初始堆大小

§ -Xmx:最大堆大小

§ -XX:NewSize=n:設(shè)置年輕代大小

§ -XX:NewRatio=n:設(shè)置年輕代和年老代的比值。如:3,,表示年輕代與年老代比值為13,,年輕代占整個(gè)年輕代年老代和的1/4

§ -XX:SurvivorRatio=n:年輕代中Eden區(qū)與兩個(gè)Survivor區(qū)的比值。注意Survivor區(qū)有兩個(gè),。如:3,,表示EdenSurvivor=32,一個(gè)Survivor區(qū)占整個(gè)年輕代的1/5

§ -XX:MaxPermSize=n:設(shè)置持久代大小

收集器設(shè)置 

§ -XX:+UseSerialGC:設(shè)置串行收集器

§ -XX:+UseParallelGC:設(shè)置並行收集器

§ -XX:+UseParalledlOldGC:設(shè)置並行年老代收集器

§ -XX:+UseConcMarkSweepGC:設(shè)置並發(fā)收集器

垃圾回收統(tǒng)計(jì)信息 

§ -XX:+PrintGC

§ -XX:+PrintGCDetails

§ -XX:+PrintGCTimeStamps

§ -Xloggc:filename

並行收集器設(shè)置 

§ -XX:ParallelGCThreads=n:設(shè)置並行收集器收集時(shí)使用的CPU數(shù)。並行收集線程數(shù)。

§ -XX:MaxGCPauseMillis=n:設(shè)置並行收集最大暫停時(shí)間

§ -XX:GCTimeRatio=n:設(shè)置垃圾回收時(shí)間占程序運(yùn)行時(shí)間的百分比,。公式為1/(1+n)

並發(fā)收集器設(shè)置 

§ -XX:+CMSIncrementalMode:設(shè)置為增量模式。適用於單CPU情況,。

-XX:ParallelGCThreads=n:設(shè)置並發(fā)收集器年輕代收集方式為並行收集時(shí),使用的CPU數(shù),。並行收集線程數(shù),。

1.4. 調(diào)優(yōu)總結(jié)

1.4.1. 年輕代大小選擇

響應(yīng)時(shí)間優(yōu)先的應(yīng)用盡可能設(shè)大,直到接近系統(tǒng)的最低響應(yīng)時(shí)間限制(根據(jù)實(shí)際情況選擇),。在此種情況下,,年輕代收集發(fā)生的頻率也是最小的。同時(shí),,減少到達(dá)年老代的對(duì)象,。

吞吐量?jī)?yōu)先的應(yīng)用:盡可能的設(shè)置大,可能到達(dá)Gbit的程度。因?yàn)閷?duì)響應(yīng)時(shí)間沒有要求,,垃圾收集可以並行進(jìn)行,,一般適合8CPU以上的應(yīng)用。

1.4.2. 年老代大小選擇

響應(yīng)時(shí)間優(yōu)先的應(yīng)用

年老代使用並發(fā)收集器,,所以其大小需要小心設(shè)置,,一般要考慮並發(fā)會(huì)話率會(huì)話持續(xù)時(shí)間等一些參數(shù)。如果堆設(shè)置小了,,可以會(huì)造成內(nèi)存碎片,、高回收頻率以及應(yīng)用暫停而使用傳統(tǒng)的標(biāo)記清除方式;如果堆大了,,則需要較長(zhǎng)的收集時(shí)間,。最優(yōu)化的方案,一般需要參考以下數(shù)據(jù)獲得: 

並發(fā)垃圾收集信息

持久代並發(fā)收集次數(shù)

傳統(tǒng)GC信息

花在年輕代和年老代回收上的時(shí)間比例

減少年輕代和年老代花費(fèi)的時(shí)間,,一般會(huì)提高應(yīng)用的效率

吞吐量?jī)?yōu)先的應(yīng)用

一般吞吐量?jī)?yōu)先的應(yīng)用都有一個(gè)很大的年輕代和一個(gè)較小的年老代。原因是,,這樣可以盡可能回收掉大部分短期對(duì)象,,減少中期的對(duì)象,而年老代盡存放長(zhǎng)期存活對(duì)象,。

較小堆引起的碎片問題

因?yàn)槟昀洗膩K發(fā)收集器使用標(biāo)記,、清除算法,所以不會(huì)對(duì)堆進(jìn)行壓縮,。當(dāng)收集器回收時(shí),,他會(huì)把相鄰的空間進(jìn)行合並,這樣可以分配給較大的對(duì)象,。但是,,當(dāng)堆空間較小時(shí),運(yùn)行一段時(shí)間以後,,就會(huì)出現(xiàn)碎片,,如果並發(fā)收集器找不到足夠的空間,那麼並發(fā)收集器將會(huì)停止,,然後使用傳統(tǒng)的標(biāo)記,、清除方式進(jìn)行回收。如果出現(xiàn)碎片,,可能需要進(jìn)行如下配置: 

-XX:+UseCMSCompactAtFullCollection:使用並發(fā)收集器時(shí),,開啟對(duì)年老代的壓縮。

-XX:CMSFullGCsBeforeCompaction=0:上面配置開啟的情況下,,這裏設(shè)置多少次Full GC後,,對(duì)年老代進(jìn)行壓縮

2. Resin的調(diào)優(yōu)

要綜合考慮resin線程池大小、-XmxJVM最大可用內(nèi)存-Xms:初始堆大小,、-XmnYoung Generationheap size參數(shù)互相匹配,。(JVM2個(gè)GC線程。第一個(gè)線程負(fù)責(zé)回收HeapYoung區(qū),。第二個(gè)線程在Heap不足時(shí),,遍曆Heap,將Young區(qū)升級(jí)為Older區(qū),。Older區(qū)的大小等於-Xmx減去-Xmn,,不能將-Xms的值設(shè)的過大,因?yàn)榈诙€(gè)線程被迫運(yùn)行會(huì)降低JVM的性能,。)

來避免線上resin服務(wù)反複出現(xiàn)以下異常:

OutOfMemoryError Java heap space

OutOfMemoryError PermGen space

 

2.1. Resin.xml設(shè)置JDK參數(shù):

Resin 4.0已支持把JDK參數(shù)加入resin配置文件resin.xml裏,。

參考resin的幫助文檔

JDK arguments

Resin 4.0 has moved all JDK arguments into the resin.xml file, in the <jvm-arg> tag. Because the Resin 4.0 watchdog starts each Resin server instance, it can pass the arguments defined in the configuration file to the JVM. By moving the Java arguments to the configuration file, server configuration is easier and more maintainable. 

2.2. 建議規(guī)則:

1、 ServerJVM最好將-Xms-Xmx設(shè)為相同值,。為了優(yōu)化GC,,最好讓-Xmn值約等於-Xmx1/4

2,、 通過增大-XXPermSize-XXMaxPermSize這兩個(gè)參數(shù)來避免出現(xiàn)JVM內(nèi)存永久保存區(qū)域溢出引發(fā)Resin500錯(cuò)誤,。(因?yàn)?/font>spring+struts的流行,這些框架用到大量動(dòng)態(tài)class,,ClassLoader是把這部分內(nèi)存放在PermGen space裏的,。而JVMGC是不會(huì)清理PermGen space的。這樣容易導(dǎo)致線上應(yīng)用報(bào)告PermGen space內(nèi)存溢出,。)

 

4,、建議resin配置:

建議生產(chǎn)環(huán)境下部署Resin 4resin.xml中增加如下配置節(jié)點(diǎn):

<server-default>

    <jvm-arg>-Xms1024m</jvm-arg>

    <jvm-arg>-Xmx1024m</jvm-arg>

    <jvm-arg>-Xmn256m</jvm-arg>

<jvm-arg>-XX:PermSize=128m</jvm-arg>

<jvm-arg>-XX:MaxPermSize=256m</jvm-arg>

    <thread-max>1024</thread-max>

    <socket-timeout>30s</socket-timeout>

    <keepalive-max>512</keepalive-max>

    <keepalive-timeout>60s</keepalive-timeout>

</server-default>

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多