Tomcat 調優(yōu)

/bin/catalina.bat
tomcat調高最大內存為1024M,解決內存溢出卫病;
set JAVA_OPTS= -Xmx1024M -Xms512M
設置編碼格式,解決js文件中文亂碼
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% -Dfile.encoding=UTF-8"


Tomcat性能調優(yōu)

找到Tomcat根目錄下的conf目錄,修改server.xml文件的內容窟扑。

image

1、maxConnections:這個參數是指在同一時間漏健,tomcat能夠接受的最大連接數嚎货。對于Java的阻塞式BIO,默認值是maxthreads的值蔫浆;如果在BIO模式使用定制的Executor執(zhí)行器殖属,默認值將是執(zhí)行器中maxThreads的值。對于Java 新的NIO模式克懊,maxConnections 默認值是10000忱辅,所以這個參數我們一般保持不動即可。

2谭溉、maxThreads=“300”:設置當前Tomcat的最大并發(fā)數墙懂。Tomcat默認配置的最大請求數是150個,即同時能支持150個并發(fā)扮念。一般來說损搬,在高并發(fā)的I/O密集型應用中,這個值設置為1000左右比較合理。

3巧勤、minSpareThreads=“50”:設置當前Tomcat初始化時創(chuàng)建的線程數嵌灰,默認值為25。

4颅悉、acceptCount=“250”:當同時連接的人數達到maxThreads參數設置的值時沽瞭,還可以接收排隊的連接數量,超過這個連接的則直接返回拒絕連接剩瓶。指定當任何能夠使用的處理請求的線程數都被使用時驹溃,能夠放到處理隊列中的請求數,超過這個數的請求將不予處理延曙。默認值為100豌鹤。在實際應用中,如果想加大Tomcat的并發(fā)數 枝缔,應該同時加大acceptCount和maxThreads的值布疙。

5、enableLookups=“false”:是否開啟域名反查愿卸,一般設置為false來提高處理能力灵临,它的取值還有true,一般很少使用擦酌。

6俱诸、maxKeepAliveRequests=“1”:nginx動態(tài)的轉給tomcat菠劝,nginx是不能keepalive的赊舶,而tomcat端默認開啟了keepalive,會等待keepalive的timeout赶诊,默認不設置就是使用connectionTimeout笼平。所以必須設置tomcat的超時時間,并關閉tomcat的keepalive舔痪。否則會產生大量tomcat的socket timewait寓调。maxKeepAliveRequests=”1”就可以避免tomcat產生大量的TIME_WAIT連接,從而從一定程度上避免tomcat假死锄码。

JVM性能調優(yōu)

Tomcat本身還是運行在JVM上的夺英,通過對JVM參數的調整我們可以使Tomcat擁有更好的性能。目前針對JVM的調優(yōu)主要有兩個方面:內存調優(yōu)和垃圾回收策略調優(yōu)滋捶。

一痛悯、內存調優(yōu)

找到Tomcat根目錄下的bin目錄,設置catalina.sh文件中JAVA_OPTS變量即可重窟,因為后面的啟動參數會把JAVA_OPTS作為JVM的啟動參數來處理载萌。再說Java虛擬機的內存結構是有點復雜的,相信很多人在理解上都是很抽象的,它主要分為堆扭仁、棧垮衷、方法區(qū)和垃圾回收系統(tǒng)等幾個部分組成,下面是我從網上扒的內存結構圖:

image

內存調優(yōu)這塊呢乖坠,無非就是通過修改它們各自的內存空間的大小搀突,使應用能夠更加合理的運用,下圖是我根據我機子的性能設置的參數熊泵,給各位詳細解釋一下各個參數的含義吧:

image

1描姚、-Xmx512m:設置Java虛擬機的堆的最大可用內存大小,單位:兆(m)戈次,整個堆大小=年輕代大小 + 年老代大小 + 持久代大小轩勘。持久代一般固定大小為64m。堆的不同分布情況怯邪,對系統(tǒng)會產生一定的影響绊寻。盡可能將對象預留在新生代,減少老年代GC的次數(通常老年回收起來比較慢)悬秉。實際工作中澄步,通常將堆的初始值和最大值設置相等,這樣可以減少程序運行時進行的垃圾回收次數和空間擴展和泌,從而提高程序性能村缸。

2、-Xms512m:設置Java虛擬機的堆的初始值內存大小武氓,單位:兆(m)梯皿,此值可以設置與-Xmx相同,以避免每次垃圾回收完成后JVM重新分配內存县恕。

3东羹、-Xmn170m:設置年輕代內存大小,單位:兆(m)忠烛,此值對系統(tǒng)性能影響較大属提,Sun官方推薦配置為整個堆的3/8。一般在增大年輕代內存后美尸,也會將會減小年老代大小冤议。

4、-Xss128k:設置每個線程的棧大小师坎。JDK5.0以后每個線程棧大小為1M恕酸,以前每個線程棧大小為256K。更具應用的線程所需內存大小進行調整屹耐。

在相同物理內存下尸疆,減小這個值能生成更多的線程椿猎。但是操作系統(tǒng)對一個進程內的線程數還是有限制的,不能無限生成寿弱,經驗值在3000~5000左右犯眠。

5、-XX:NewRatio=4:設置年輕代(包括Eden和兩個Survivor區(qū))與年老代的比值(除去持久代)症革。設置為4筐咧,則年輕代與年老代所占比值為1:4,年輕代占整個堆棧的1/5 噪矛。

6量蕊、-XX:SurvivorRatio=4:設置年輕代中Eden區(qū)與Survivor區(qū)的大小比值。設置為4艇挨,則兩個Survivor區(qū)與一個Eden區(qū)的比值為2:4残炮,一個Survivor區(qū)占整個年輕代的1/6。

7缩滨、-XX:MaxPermSize=16m:設置持久代大小為16m势就,上面也說了,持久代一般固定的內存大小為64m脉漏。

8苞冯、-XX:MaxTenuringThreshold=0:設置垃圾最大年齡。

如果設置為0的話侧巨,則年輕代對象不經過Survivor區(qū)舅锄,直接進入年老代。對于年老代比較多的應用司忱,可以提高效率皇忿。

如果將此值設置為一個較大值,則年輕代對象會在Survivor區(qū)進行多次復制烘贴,這樣可以增加對象再年輕代的存活時間禁添,增加在年輕代即被回收的概論。

二桨踪、垃圾回收策略調優(yōu)

找到Tomcat根目錄下的bin目錄,也是設置catalina.sh文件中JAVA_OPTS變量即可芹啥。我們都知道Java虛擬機都有默認的垃圾回收機制锻离,但是不同的垃圾回收機制的效率是不同的,正是因為這點我們才經常對Java虛擬機的垃圾回收策略進行相應的調整墓怀。下面也是通過我的一些需求來配置的垃圾回收策略:

image

Java虛擬機的垃圾回收策略一般分為:串行收集器汽纠、并行收集器和并發(fā)收集器。

串行收集器:

1傀履、-XX:+UseSerialGC:代表垃圾回收策略為串行收集器虱朵,即在整個掃描和復制過程采用單線程的方式來進行,適用于單CPU、新生代空間較小及對暫停時間要求不是非常高的應用上碴犬,是client級別默認的GC方式絮宁,主要在JDK1.5之前的垃圾回收方式。

并發(fā)收集器:

1服协、-XX:+UseParallelGC:代表垃圾回收策略為并行收集器(吞吐量優(yōu)先)绍昂,即在整個掃描和復制過程采用多線程的方式來進行,適用于多CPU偿荷、對暫停時間要求較短的應用上窘游,是server級別默認采用的GC方式。此配置僅對年輕代有效跳纳。該配置只能讓年輕代使用并發(fā)收集忍饰,而年老代仍舊使用串行收集。

2寺庄、-XX:ParallelGCThreads=4:配置并行收集器的線程數喘批,即:同時多少個線程一起進行垃圾回收。此值最好配置與處理器數目相等铣揉。

3饶深、-XX:+UseParallelOldGC:配置年老代垃圾收集方式為并行收集。JDK6.0支持對年老代并行收集 逛拱。

4敌厘、-XX:MaxGCPauseMillis=100:設置每次年輕代垃圾回收的最長時間,如果無法滿足此時間朽合,JVM會自動調整年輕代大小俱两,以滿足此值。

5曹步、-XX:+UseAdaptiveSizePolicy:設置此選項后宪彩,并行收集器會自動選擇年輕代區(qū)大小和相應的Survivor區(qū)比例,以達到目標系統(tǒng)規(guī)定的最低相應時間或者收集頻率等讲婚,此值建議使用并行收集器時尿孔,一直打開。

并發(fā)收集器:

1筹麸、-XX:+UseConcMarkSweepGC:代表垃圾回收策略為并發(fā)收集器活合。

好了,到此我對虛擬機的垃圾回收策略總結就這么多物赶,還是這句話:優(yōu)化的學習一直在路上白指,下面還有一張從其他博客中偷到的圖,據說以上三種GC機制是需要配合使用的酵紫。

image
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末告嘲,一起剝皮案震驚了整個濱河市错维,隨后出現的幾起案子,更是在濱河造成了極大的恐慌橄唬,老刑警劉巖赋焕,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異轧坎,居然都是意外死亡宏邮,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門缸血,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜜氨,“玉大人,你說我怎么就攤上這事捎泻§祝” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵笆豁,是天一觀的道長郎汪。 經常有香客問我,道長闯狱,這世上最難降的妖魔是什么煞赢? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮哄孤,結果婚禮上照筑,老公的妹妹穿的比我還像新娘。我一直安慰自己瘦陈,他們只是感情好凝危,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著晨逝,像睡著了一般蛾默。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捉貌,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天支鸡,我揣著相機與錄音,去河邊找鬼昏翰。 笑死苍匆,一個胖子當著我的面吹牛,可吹牛的內容都是我干的棚菊。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼叔汁,長吁一口氣:“原來是場噩夢啊……” “哼统求!你這毒婦竟也來了检碗?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤码邻,失蹤者是張志新(化名)和其女友劉穎折剃,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體像屋,經...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡怕犁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了己莺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奏甫。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖凌受,靈堂內的尸體忽然破棺而出阵子,到底是詐尸還是另有隱情,我是刑警寧澤胜蛉,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布挠进,位于F島的核電站,受9級特大地震影響誊册,放射性物質發(fā)生泄漏领突。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一案怯、第九天 我趴在偏房一處隱蔽的房頂上張望君旦。 院中可真熱鬧,春花似錦殴泰、人聲如沸于宙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捞魁。三九已至,卻和暖如春离咐,著一層夾襖步出監(jiān)牢的瞬間谱俭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工宵蛀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留昆著,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓术陶,卻偏偏與公主長得像凑懂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子梧宫,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344