出處:http://www.iteye.com
tomcat的運作模式有3種.修改他們的運作模式.3種模式的運作是否成功,可以看他的啟動控制台,或者啟動日志.或者登入他們的預設頁面http://localhost:8080/檢視其中的伺服器狀态。
1)bio
預設的模式,性能非常低下,沒有經過任何優化處理和支援.
2)nio
利用java的異步io護理技術,no blocking IO技術.
想運作在該模式下,直接修改server.xml裡的Connector節點,修改protocol為
<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
enableLookups="false"
redirectPort="8443" />
啟動後,就可以生效。
3)apr
安裝起來最困難,但是從作業系統級别來解決異步的IO問題,大幅度的提高性能.
必須要安裝apr和native,直接啟動就支援apr。下面的修改純屬多餘,僅供大家擴充知識,但仍然需要安裝apr和native
如nio修改模式,修改protocol為
org.apache.coyote.http11.Http11AprProtocol
Tomcat的四種基于HTTP協定的Connector性能比較
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="8443"/>
<Connector executor="tomcatThreadPool"
port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector executor="tomcatThreadPool"
port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443" />
我們姑且把上面四種Connector按照順序命名為 NIO, HTTP, POOL, NIOP
為了不讓其他因素影響測試結果,我們隻對一個很簡單的jsp頁面進行測試,這個頁面僅僅是輸出一個Hello World。假設位址是 http://tomcat1/test.jsp
我們依次對四種Connector進行測試,測試的用戶端在另外一台機器上用ab指令來完成,測試指令為: ab -c 900 -n 2000 http://tomcat1/test.jsp ,最終的測試結果如下表所示(機關:平均每秒處理的請求數):
NIO HTTP POOL NIOP
281 65 208 365
666 66 110 398
692 65 66 263
256 63 94 459
440 67 145 363
由這五組資料不難看出,HTTP的性能是很穩定,但是也是最差的,而這種方式就是Tomcat的預設配置。NIO方式波動很大,但沒有低于280 的,NIOP是在NIO的基礎上加入線程池,可能是程式處理更複雜了,是以性能不見得比NIO強;而POOL方式則波動很大,測試期間和HTTP方式一樣,不時有停滞。
由于linux的核心預設限制了最大打開檔案數目是1024,是以此次并發數控制在900。
盡管這一個結果在實際的網站中因為各方面因素導緻,可能差别沒這麼大,例如受限于資料庫的性能等等的問題。但對我們在部署網站應用時還是具有參考價值的。