首先,修改Tomcat/conf/server.xml配置文件。
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="400" /> <Connector executor="tomcatThreadPool" port="80" protocol="HTTP/1.1" connectionTimeout="20000" enableLookups="false" redirectPort="8443" URIEncoding="UTF-8" acceptCount="1000" />
其次,修改tomcat/bin/catalina.bat配置文件為以下。
rem --------------------------------------------------------------------------- rem Guess CATALINA_HOME if not defined 之間的位置,不要加到那些if里面去了,否則不一定會(huì)生效. set JAVA_OPTS=-Xms1024m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m 如果有疑問.可以用 echo %JAVA_OPTS%>d:JAVA_OPTS.log
主要修改了maxThreads、acceptCount。google資料說“如果要加大并發(fā)連接數(shù),應(yīng)同時(shí)加大這兩個(gè)參數(shù)。
1.tomcat的線程數(shù)量有待商榷。thread太多,導(dǎo)致切換過多,性能下降嚴(yán)重。這個(gè)數(shù)量應(yīng)該是你單個(gè)機(jī)器的承載能力, 壓力測(cè)試下得出的結(jié)果。不可任意加大。一般情況下, 256-512個(gè)已經(jīng)非常高的數(shù)值了。
2.JVM參數(shù)配置, 你這個(gè)會(huì)導(dǎo)致嚴(yán)重的stop world時(shí)間。如果你想應(yīng)用響應(yīng)平緩, 一般看你的應(yīng)用對(duì)于臨時(shí)內(nèi)存的需求, 一般來說, -Xmn128-256m就夠了, 這個(gè)要看你的停頓時(shí)間的計(jì)算, 你把gc的收集打印出來,再研究下, 最大停頓時(shí)間。這個(gè)我的BLOG說的比較詳細(xì)。你去看看吧。
3.-Xss128k 這個(gè)參數(shù), 建議你設(shè)置成256k, 不然容易造成不夠用, 特別是你的程序有比較多的遞歸行為。比如排序。
4.另外如果想提高內(nèi)存的性能, 你可以看看大內(nèi)存設(shè)置.不是很好操作, 我沒有測(cè)試過。
5.在性能提升上, 我建議你使用linux kernel 2.6.22+版本, JAVA6 是不是32位的不是很要緊。這個(gè)提升是非常大的。
32位上, 你對(duì)JAVA能配置的內(nèi)存理解是錯(cuò)誤的。一般來說1。5G的配置, 都可能導(dǎo)致JVM進(jìn)程出問題, 這個(gè)測(cè)試我做過, 一般高壓力運(yùn)行2-3天后, JVM會(huì)CRASH, 我不是很明白為什么, 有可能JAVA5在CMS的問題導(dǎo)致的。一般建議在32位下配置內(nèi)存為1280m.
===========================================================
Heap Size 最大不要超過可用物理內(nèi)存的80%,一般的要將-Xms和-Xmx選項(xiàng)設(shè)置為相同堆內(nèi)存分配 (訪問量比較大時(shí)設(shè)為一致)。
JVM初始分配的內(nèi)存由-Xms指定,默認(rèn)是物理內(nèi)存的1/64;JVM最大分配的內(nèi)存由-Xmx指定,默認(rèn)是物理內(nèi)存的1/4。默認(rèn)空余堆內(nèi)存小于 40%時(shí),JVM就會(huì)增大堆直到-Xmx的最大限制;空余堆內(nèi)存大于70%時(shí),JVM會(huì)減少堆直到-Xms的最小限制。因此服務(wù)器一般設(shè)置-Xms、 -Xmx相等以避免在每次GC 后調(diào)整堆的大小。
非堆內(nèi)存分配
JVM使用-XX:PermSize設(shè)置非堆內(nèi)存初始值,默認(rèn)是物理內(nèi)存的1/64;由XX:MaxPermSize設(shè)置最大非堆內(nèi)存的大小,默認(rèn)是物理內(nèi)存的1/4。
JVM內(nèi)存限制(最大值)
首先JVM內(nèi)存限制于實(shí)際的最大物理內(nèi)存(廢話!呵呵),假設(shè)物理內(nèi)存無限大的話,JVM內(nèi)存的最大值跟操作系統(tǒng)有很大的關(guān)系。簡(jiǎn)單的說就32位 處理器雖然可控內(nèi)存空間有4GB,但是具體的操作系統(tǒng)會(huì)給一個(gè)限制,這個(gè)限制一般是2GB-3GB(一般來說windows系統(tǒng)下為1.5G- 2G,Linux系統(tǒng)下為2G-3G),而64bit以上的處理器就不會(huì)有限制了。(使用java命令測(cè)試出支持的最大值)。
Tomcat的server.xml中Context元素的以下參數(shù)應(yīng)該怎么配合適 ?
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" acceptCount="100" />
(第一種方法)
maxThreads="150" 表示最多同時(shí)處理150個(gè)連接 ;
minSpareThreads="25" 表示即使沒有人使用也開這么多空線程等待 ;
maxSpareThreads="75" 表示如果最多可以空75個(gè)線程,例如某時(shí)刻有80人訪問,之后沒有人訪問了,則tomcat不會(huì)保留80個(gè)空線程,而是關(guān)閉5個(gè)空的;
acceptCount="100" 當(dāng)同時(shí)連接的人數(shù)達(dá)到maxThreads時(shí),還可以接收排隊(duì)的連接,超過這個(gè)連接的則直接返回拒絕連接。
根據(jù)你的配置建議
maxThreads="500"
minSpareThreads="100" 如果你的網(wǎng)站經(jīng)常訪問量都很大的話,缺省就開比較大
maxSpareThreads="300"
acceptCount="100"
這只是說你的服務(wù)器可以支持這么多用戶,但還要看你安裝了哪些東西,還有你的程序是否足夠高效率。
(第二種方法)
1.如何加大tomcat連接數(shù)
在tomcat配置文件server.xml中的配置中,和連接數(shù)相關(guān)的參數(shù)有:
minProcessors:最小空閑連接線程數(shù),用于提高系統(tǒng)處理性能,默認(rèn)值為10;
maxProcessors:最大連接線程數(shù),即:并發(fā)處理的最大請(qǐng)求數(shù),默認(rèn)值為75
acceptCount:允許的最大連接數(shù),應(yīng)大于等于maxProcessors,默認(rèn)值為100
enableLookups:是否反查域名,取值為:true或false。為了提高處理能力,應(yīng)設(shè)置為false;
connectionTimeout:網(wǎng)絡(luò)連接超時(shí),單位:毫秒。設(shè)置為0表示永不超時(shí),這樣設(shè)置有隱患的。通常可設(shè)置為30000毫秒。
其中和最大連接數(shù)相關(guān)的參數(shù)為maxProcessors和acceptCount。如果要加大并發(fā)連接數(shù),應(yīng)同時(shí)加大這兩個(gè)參數(shù)。
web server允許的最大連接數(shù)還受制于操作系統(tǒng)的內(nèi)核參數(shù)設(shè)置,通常Windows是2000個(gè)左右,Linux是1000個(gè)左右。Unix中如何設(shè)置這些參數(shù),請(qǐng)參閱Unix常用監(jiān)控和管理命令。
tomcat4中的配置示例:
<Connector port="8080" minProcessors="10" maxProcessors="1024" enableLookups="false" redirectPort="8443" acceptCount="1024" debug="0" connectionTimeout="30000" />
對(duì)于其他端口的偵聽配置,以此類推。
2. tomcat中如何禁止列目錄下的文件
在{tomcat_home}/conf/web.xml中,把listings參數(shù)設(shè)置成false即可,如下:
...
listings
false






