系統(tǒng)上線之前研究了一下tomcat的優(yōu)化方案,主要包括一下幾個(gè)方面:
1、JDK內(nèi)存優(yōu)化
Tomcat默認(rèn)可以使用的內(nèi)存為128MB
Unix配置位置
{tomcat_home}/bin/catalina.sh
JAVA_OPTS='-Xms[初始化內(nèi)存大小] -Xmx[可以使用的最大內(nèi)存]
{tomcat_home}/bin/startup.sh
JAVA_OPTS='-Xms128m -Xmx1256m -Djava.awt.headless=true'; export JAVA_OPTS
vi /etc/profile
export JAVA_OPTS=”$JAVA_OPTS -Xms[初始化內(nèi)存大小] -Xmx[可以使用的最大內(nèi)存]”
設(shè)置值:
一般說(shuō)來(lái),你應(yīng)該使用物理內(nèi)存的 80% 作為堆大小。
如果本機(jī)上有Apache服務(wù)器,可以先折算Apache需要的內(nèi)存,然后修改堆大小。建議設(shè)置為70%;
建議設(shè)置[[初始化內(nèi)存大小]等于[可以使用的最大內(nèi)存],這樣可以減少平凡分配堆而降低性能。
2、精簡(jiǎn)應(yīng)用和配置文件
刪除不需要的管理應(yīng)用和幫助應(yīng)用,提高tomcat安全性。
刪除webapps下所有文件
rm –fr $CATALINA_HOME/webapps/*
刪除server/webapps下所有文件
rm –fr $CATALINA_HOME/server/webapps/*
精簡(jiǎn)sever.xml配置文件
使用tomcat發(fā)布版本中的最小配置文件,提高性能,如果有功能上的需求,在逐個(gè)的加入功能配置。
備份 mv server.xml server_default.xml
復(fù)制 cp server-minimal.xml server.xml
3、連接器優(yōu)化
在$CATALINA_HOME/conf/server.xml配置文件中的Connetctor節(jié)點(diǎn),和連接數(shù)相關(guān)的參數(shù)配置和優(yōu)化。
maxThreads
Tomcat使用線程來(lái)處理接收的每個(gè)請(qǐng)求。這個(gè)值表示Tomcat可創(chuàng)建的最大的線程數(shù)。默認(rèn)值200。 可以根據(jù)機(jī)器的時(shí)期性能和內(nèi)存大小調(diào)整,一般可以在400-500。最大可以在800左右。
acceptCount
指定當(dāng)所有可以使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),可以放到處理隊(duì)列中的請(qǐng)求數(shù),超過(guò)這個(gè)數(shù)的請(qǐng)求將不予處理。默認(rèn)值10。
minSpareThreads
Tomcat初始化時(shí)創(chuàng)建的線程數(shù)。默認(rèn)值4。
maxSpareThreads
一旦創(chuàng)建的線程超過(guò)這個(gè)值,Tomcat就會(huì)關(guān)閉不再需要的socket線程。默認(rèn)值50。
enableLookups
是否反查域名,默認(rèn)值為true。為了提高處理能力,應(yīng)設(shè)置為false
connnectionTimeout
網(wǎng)絡(luò)連接超時(shí),默認(rèn)值20000,單位:毫秒。設(shè)置為0表示永不超時(shí),這樣設(shè)置有隱患的。通??稍O(shè)置為30000毫秒。
maxKeepAliveRequests
保持請(qǐng)求數(shù)量,默認(rèn)值100。
bufferSize
輸入流緩沖大小,默認(rèn)值2048 bytes。
compression
壓縮傳輸,取值on/off/force,默認(rèn)值off。
其中和最大連接數(shù)相關(guān)的參數(shù)為maxThreads和acceptCount。如果要加大并發(fā)連接數(shù),應(yīng)同時(shí)加大這兩個(gè)參數(shù)。web server允許的最大連接數(shù)還受制于操作系統(tǒng)的內(nèi)核參數(shù)設(shè)置,通常Windows是2000個(gè)左右,Linux是1000個(gè)左右。
4、啟用Tomcat壓縮(HTTP壓縮)功能
HTTP 壓縮可以大大提高瀏覽網(wǎng)站的速度,現(xiàn)在流行的瀏覽器都是支持的,包括 IE、FireFox、Opera 等。
壓縮對(duì)象
對(duì)靜態(tài)對(duì)象:相對(duì)于普通的瀏覽過(guò)程HTML ,CSS,Javascript , Text ,它可以節(jié)省40%左右的流量。更為重要的是對(duì)動(dòng)態(tài)生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等輸出的網(wǎng)頁(yè)也能進(jìn)行壓縮,壓縮效率驚人。
1) compression="on" 打開(kāi)壓縮功能 2) compressionMinSize="2048" 啟用壓縮的輸出內(nèi)容大小,這里面默認(rèn)為2KB 3) noCompressionUserAgents="gozilla, traviata" 對(duì)于以下的瀏覽器,不啟用壓縮 4) compressableMimeType="text/html,text/xml" 壓縮類(lèi)型
1、JDK內(nèi)存優(yōu)化
Tomcat默認(rèn)可以使用的內(nèi)存為128MB
Unix配置位置
{tomcat_home}/bin/catalina.sh
JAVA_OPTS='-Xms[初始化內(nèi)存大小] -Xmx[可以使用的最大內(nèi)存]
{tomcat_home}/bin/startup.sh
JAVA_OPTS='-Xms128m -Xmx1256m -Djava.awt.headless=true'; export JAVA_OPTS
vi /etc/profile
export JAVA_OPTS=”$JAVA_OPTS -Xms[初始化內(nèi)存大小] -Xmx[可以使用的最大內(nèi)存]”
設(shè)置值:
一般說(shuō)來(lái),你應(yīng)該使用物理內(nèi)存的 80% 作為堆大小。
如果本機(jī)上有Apache服務(wù)器,可以先折算Apache需要的內(nèi)存,然后修改堆大小。建議設(shè)置為70%;
建議設(shè)置[[初始化內(nèi)存大小]等于[可以使用的最大內(nèi)存],這樣可以減少平凡分配堆而降低性能。
2、精簡(jiǎn)應(yīng)用和配置文件
刪除不需要的管理應(yīng)用和幫助應(yīng)用,提高tomcat安全性。
刪除webapps下所有文件
rm –fr $CATALINA_HOME/webapps/*
刪除server/webapps下所有文件
rm –fr $CATALINA_HOME/server/webapps/*
精簡(jiǎn)sever.xml配置文件
使用tomcat發(fā)布版本中的最小配置文件,提高性能,如果有功能上的需求,在逐個(gè)的加入功能配置。
備份 mv server.xml server_default.xml
復(fù)制 cp server-minimal.xml server.xml
3、連接器優(yōu)化
在$CATALINA_HOME/conf/server.xml配置文件中的Connetctor節(jié)點(diǎn),和連接數(shù)相關(guān)的參數(shù)配置和優(yōu)化。
maxThreads
Tomcat使用線程來(lái)處理接收的每個(gè)請(qǐng)求。這個(gè)值表示Tomcat可創(chuàng)建的最大的線程數(shù)。默認(rèn)值200。 可以根據(jù)機(jī)器的時(shí)期性能和內(nèi)存大小調(diào)整,一般可以在400-500。最大可以在800左右。
acceptCount
指定當(dāng)所有可以使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),可以放到處理隊(duì)列中的請(qǐng)求數(shù),超過(guò)這個(gè)數(shù)的請(qǐng)求將不予處理。默認(rèn)值10。
minSpareThreads
Tomcat初始化時(shí)創(chuàng)建的線程數(shù)。默認(rèn)值4。
maxSpareThreads
一旦創(chuàng)建的線程超過(guò)這個(gè)值,Tomcat就會(huì)關(guān)閉不再需要的socket線程。默認(rèn)值50。
enableLookups
是否反查域名,默認(rèn)值為true。為了提高處理能力,應(yīng)設(shè)置為false
connnectionTimeout
網(wǎng)絡(luò)連接超時(shí),默認(rèn)值20000,單位:毫秒。設(shè)置為0表示永不超時(shí),這樣設(shè)置有隱患的。通??稍O(shè)置為30000毫秒。
maxKeepAliveRequests
保持請(qǐng)求數(shù)量,默認(rèn)值100。
bufferSize
輸入流緩沖大小,默認(rèn)值2048 bytes。
compression
壓縮傳輸,取值on/off/force,默認(rèn)值off。
其中和最大連接數(shù)相關(guān)的參數(shù)為maxThreads和acceptCount。如果要加大并發(fā)連接數(shù),應(yīng)同時(shí)加大這兩個(gè)參數(shù)。web server允許的最大連接數(shù)還受制于操作系統(tǒng)的內(nèi)核參數(shù)設(shè)置,通常Windows是2000個(gè)左右,Linux是1000個(gè)左右。
4、啟用Tomcat壓縮(HTTP壓縮)功能
HTTP 壓縮可以大大提高瀏覽網(wǎng)站的速度,現(xiàn)在流行的瀏覽器都是支持的,包括 IE、FireFox、Opera 等。
壓縮對(duì)象
對(duì)靜態(tài)對(duì)象:相對(duì)于普通的瀏覽過(guò)程HTML ,CSS,Javascript , Text ,它可以節(jié)省40%左右的流量。更為重要的是對(duì)動(dòng)態(tài)生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等輸出的網(wǎng)頁(yè)也能進(jìn)行壓縮,壓縮效率驚人。
<Connector port="80" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8"compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />
maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8"compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />
1) compression="on" 打開(kāi)壓縮功能 2) compressionMinSize="2048" 啟用壓縮的輸出內(nèi)容大小,這里面默認(rèn)為2KB 3) noCompressionUserAgents="gozilla, traviata" 對(duì)于以下的瀏覽器,不啟用壓縮 4) compressableMimeType="text/html,text/xml" 壓縮類(lèi)型