Tomcat的四種基於HTTP協議的Connector性能比較


今天在osc上看到對Tomcat的四種基於HTTP協議的Connector性能比較

具體內容如下:


<Connector port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol"                           connectionTimeout="20000" redirectPort="8443"/>
<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。

盡管這一個結果在實際的網站中因為各方面因素導致,可能差別沒這么大,例如受限於數據庫的性能等等的問題。但對我們在部署網站應用時還是具有參考價值的。

 

<Connector
executor="tomcatThreadPool"
port="8090"
redirectPort="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
compression="on"
compressionMinSize="2048"
enableLookups="false"
acceptCount="1000"
URIEncoding="UTF-8"
connectionTimeout="40000" />

連接器使用的線程池的名子:executor="tomcatThreadPool"
連接器端口                        :port="8090"
連接器使用的傳輸方式      :protocol="org.apache.coyote.http11.Http11NioProtocol"
傳輸時是否支持壓縮          :compression="on"
壓縮的大小                        :compressionMinSize="2048"

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 
        maxThreads="800" minSpareThreads="400" maxSpareThreads="700"/>

線程池名:           name="tomcatThreadPool"
線程前綴:           namePrefix="catalina-exec-"
最大產生線程數:maxThreads="800"

最小初始現程數:minSpareThreads="400"

最大初始現程數:minSpareThreads="700"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM