JBOSS优化--比较有用的生产环境配置
轉(zhuǎn)自:http://wangtong40.iteye.com/blog/737235
Java OPTS設(shè)置
在Java的Jvm分為主要為兩大塊:一個(gè)是heap和 nheap
Heap包括三個(gè)區(qū)域. Eden space 、survivor space、tenured space.
其中surivor space包括兩個(gè)區(qū),一個(gè)是from區(qū),一個(gè)是to區(qū)
Eden是負(fù)責(zé)新對(duì)象的創(chuàng)建區(qū)域。當(dāng)新對(duì)象無法在eden區(qū)創(chuàng)建的時(shí)候,eden區(qū)會(huì)進(jìn)行minor gc,會(huì)將一些失效的對(duì)象清除。會(huì)將清除下來的部分對(duì)象放到survivor space區(qū)域或者tenured space區(qū)域。當(dāng)tenured space的對(duì)象越來越多的時(shí)候,達(dá)到j(luò)vm內(nèi)存不足10%的時(shí)候,會(huì)進(jìn)行一次full gc來釋放對(duì)象。項(xiàng)目要盡可能少的full gc ,應(yīng)為full gc比較占用內(nèi)存,一般要求吞吐量比較大的時(shí)候,盡量的將new區(qū)域設(shè)置的比較大一點(diǎn)。也就是eden和survivor這個(gè)區(qū)域。?
下面簡要的說一下配置參數(shù)?
set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m -XX:MaxPermSize=256m?
-Xms512m 代表jvm最少用 512m內(nèi)存,32bit操作系統(tǒng)最大在1.5g-2g之間。64位的無限制
-Xmx1024m 代表jvm最多使用 1024m內(nèi)存,盡量的將-Xms和-Xmx大小設(shè)置相同,這樣避免內(nèi)存重新分配影響性能?
-Xss=128k 線程初始化大小,5.0之前默認(rèn)是128k,之后為1m,線程機(jī)器最大為3000-5000?
-XX:MaxPermSize=256m.這是表明持久類,也就是noheap區(qū)域的最大為256?
-XX:PermSize=256m這個(gè)持久區(qū)域初始化為256m,一般持久類的大小是64m
這個(gè)配置是最常用的配置。如果需要考慮到吞吐量,那么new space和old space你就得重新分配一下
Jvm垃圾收集器包括三種:串行,并行,并發(fā)?
串行:處理小型數(shù)據(jù),jdk1.4之前默認(rèn)使用?
并行:1.5和1.5之后使用,處理
典型服務(wù)器配置有以下幾種:
-Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20
-XX:+UseParallelGC:選擇垃圾收集器為并行收集器。此配置僅對(duì)年輕代有效。即上述配置下,年輕代使用并發(fā)收集,而年老代仍舊使用串行收集。
-XX:ParallelGCThreads=20:配置并行收集器的線程數(shù),即:同時(shí)多少個(gè)線程一起進(jìn)行垃圾回收。此值最好配置與處理器數(shù)目相同
-Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelOldGC
-XX:+UseParallelOldGC:配置年老代垃圾收集方式為并行收集。JDK6.0支持對(duì)年老代并行收集。
-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ì)影響性能,但是可以消除碎片
常見配置匯總?
1. 堆設(shè)置?
-Xss128k:JBoss每增加一個(gè)線程(thread)就會(huì)立即消耗128K,默認(rèn)值好像是512k.
-Xms512m:初始堆大小,代表jvm最少用 512m內(nèi)存
-Xmx:最大堆大小 一般為服務(wù)器的3/4內(nèi)存量,推薦至少使用4G內(nèi)存,不應(yīng)該超過物理內(nèi)存的90%。
-XX:NewSize=n:設(shè)置年輕代大小?
-XX:NewRatio=n:設(shè)置年輕代和年老代的比值。如:為3,表示年輕代與年老代比值為1:3,年輕代占整個(gè)年輕代年老代和的1/4?
-XX:SurvivorRatio=n:年輕代中Eden區(qū)與兩個(gè)Survivor區(qū)的比值。注意Survivor區(qū)有兩個(gè)。如:3,表示Eden:Survivor=3:2,一個(gè)Survivor區(qū)占整個(gè)年輕代的1/5?
-XX:MaxPermSize=n:設(shè)置持久代大小?
2. 收集器設(shè)置?
-XX:+UseSerialGC:設(shè)置串行收集器?
-XX:+UseParallelGC:設(shè)置并行收集器?
-XX:+UseParalledlOldGC:設(shè)置并行年老代收集器?
-XX:+UseConcMarkSweepGC:設(shè)置并發(fā)收集器?
3. 垃圾回收統(tǒng)計(jì)信息?
-XX:+PrintGC?
-XX:+PrintGCDetails?
-XX:+PrintGCTimeStamps?
-Xloggc:filename?
4. 并行收集器設(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)?
5. 并發(fā)收集器設(shè)置?
-XX:+CMSIncrementalMode:設(shè)置為增量模式。適用于單CPU情況。?
-XX:ParallelGCThreads=n:設(shè)置并發(fā)收集器年輕代收集方式為并行收集時(shí),使用的CPU數(shù)。并行收集線程數(shù)。
查看CPU數(shù)
cat /proc/cpuinfo | grep "processor" | wc -l
生產(chǎn)環(huán)境8G內(nèi)存jboss配置如下
?
數(shù)據(jù)庫連接
在JBOSS_HOME\Server\default\deploy目錄下存在**-xa-ds.xml文件,用于JBOSS同數(shù)據(jù)庫連接等配置,默認(rèn)情況下**-xa-ds.xml文件中不包含關(guān)于數(shù)據(jù)庫連接池等方面的配置信息,可以添加一下內(nèi)容進(jìn)行數(shù)據(jù)庫連接池方面的設(shè)置:
?
第3章??? Tomcat
3.1??? web.xml
修改Tomcat的JSP自動(dòng)編譯配置項(xiàng):
%JBOSS_HOME%/deploy/jbossweb-tomcat50.sar/conf/web.xml
修改如下代碼:
?
?追加development=false
通知tomcat在用戶訪問時(shí)不必作JSP文件是否已被修改的檢查。
3.2??? server.xml
修改Tomcat的server.xml文件,設(shè)置線程數(shù)、支持壓縮協(xié)議等…
%JBOSS_HOME%/deploy/jbossweb-tomcat50.sar/server.xml
?
第4章??? 日志優(yōu)化
優(yōu)化JBOSS日志:%JBOSS_HOME%/server/default/conf/log4j.xml
4.1??? 修改Append
修改以下內(nèi)容:
?
修改后的代碼如下:
?
4.2??? 修改Root
關(guān)閉控制臺(tái)日志輸出:
屏蔽:<appender-ref ref="CONSOLE"/>
?
?
JBOSS瘦身
在JBOSS中提供許多通常不需要的服務(wù)和Jar包,比如JMX、Mail、AOP、Hibernate等,可以根據(jù)具體項(xiàng)目所涉及的技術(shù),刪減JBOSS內(nèi)置應(yīng)用,從而提高JBOSS中間件啟動(dòng)速度,減少占用系統(tǒng)資源。
?刪減服務(wù)
在%JBOSS_HOME%/server/default/deploy中含有一些比如jboss-aop.deployer等目錄和mail-service.xml等應(yīng)用配置文件,如果不需要使用這些應(yīng)用的話,可以將其一一刪除,不過刪除時(shí)要分外小心,避免應(yīng)用系統(tǒng)無法啟動(dòng)。
下圖為只包含數(shù)據(jù)庫應(yīng)用的一個(gè)已刪減不需要服務(wù)后的deploy文件夾目錄:
?
刪減Jar包
在%JBOSS_HOME%/server/default/lib中包含一些應(yīng)用系統(tǒng)不需要的Jar包,這些包同樣可以進(jìn)行刪除。
轉(zhuǎn)載于:https://www.cnblogs.com/oisiv/archive/2011/10/08/2201911.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的JBOSS优化--比较有用的生产环境配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 让你的silverlight更炫(三):
- 下一篇: 查看端口占用命令