在Tomcat配置文件conf下面 server.xml 中的配置中和連接數相關的參數有:
minProcessors:最小空閑連接線程數,用於提高系統處理性能,默認值為10
maxProcessors:最大連接線程數,即:並發處理的最大請求數,默認值為75
acceptCount:允許的最大連接數,應大於等於maxProcessors,默認值為100
enableLookups:是否反查域名,取值為:true或false。為了提高處理能力,應設置為false
connectionTimeout:網絡連接超時,單位:毫秒。設置為0表示永不超時,這樣設置有隱患的。通常可設置為30000毫秒。
參數修改
默認的tomcat 參數:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
修改:
<Connector port=“8080" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700" connectionTimeout="20000" redirectPort="8443" />
參數說明:
protocol="org.apache.coyote.http11.Http11NioProtocol" 使用java的異步io護理技術,no blocking IO
maxThreads=“600" 表示最多同時處理600個連接最大線程數
minSpareThreads=“100" 表示即使沒有人使用也開這么多空線程等待,初始化時創建的線程數
maxSpareThreads=“500" 表示如果最多可以空500個線程,例如某時刻有505人訪問,之后沒有人訪問了,則tomcat不會保留505個空線程,而是關閉5個空的。 一旦創建的線程超過這個值,Tomcat就會關閉不再需要的socket線程。
acceptCount="700" 指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理
ajp協議優化
如果使用apache和tomcat做集群的負載均衡,並且使用ajp協議做apache和tomcat的協議轉發,需要優化ajp connector。<Connector port="8009" protocol="AJP/1.3" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700" connectionTimeout="20000" redirectPort="8443" />
查看tomcat線程數:
獲取tomcat進程pid
ps -ef|grep tomcat
統計該tomcat進程內的線程個數
ps -Lf 29295 |wc -l
