tomcat啓動Nio,Apr詳解以及配置

1.tomcat NIO配置

今天在查看日誌時發現tomcat的Socket連接方式爲bio,於是我想既然有bio那肯定有nio。果然,一查就發現tomcat在6.0之後就可以配置nio的方式。nio方式比bio具有更好的併發性,如果Web應用需要更好的併發性能,當然是使用nio方式了。配置具體方法如下:

將Service.xml文件下的內容

<Connector port="8080" protocol="HTTP/1.1"  

connectionTimeout="20000"  

redirectPort="8443" /> 

改爲

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"  

connectionTimeout="20000"  

redirectPort="8443" />

那麼在啓動tomcat時可以查看到tomcat已經以nio方式啓動

以此同時,爲了獲得更好的併發性還可以配置線程池

<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000" redirectPort="8443" />

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"

               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"

               clientAuth="false" sslProtocol="TLS" />

2.Tomcat Connector(Tomcat連接器)有bio、nio、apr三種運行模式

BIO
bio是阻塞式IO操作,使用java io技術,即每一個請求都要創建一個線程來進行處理。缺點:併發量高時,線程數較多,佔資源

NIO
使用java nio技術,能夠通過少量的線程處理大量的請求
nio是基於java中非阻塞IO操作的API實現,比傳統的i/o處理方式有更高的併發運行性能

APR
(Apache Portable Runtime/Apache可移植運行時庫)
apr是從操作系統級別解決異步IO問題,大幅度提高服務器的併發處理性能,也是Tomcat生產環境運行的首選方式

 

補充:tomcat8以及之後的版本默認都是以NIO的模式啓動,如果要啓動apr,需要自己設置。

①http 協議就是以apr的模式啓動(HTTP Connector

將service.xml文件中
<Connector port="8091" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

修改成
<Connector port="8091" protocol="org.apache.coyote.http11.Http11AprProtocol" connectionTimeout="20000" redirectPort="8443" />

②ajp 協議以apr的模式啓動(AJP Connector

將service.xml文件中
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

修改成
<Connector port="8092" protocol="org.apache.coyote.ajp.AjpAprProtocol" redirectPort="8443" />

最後來看網絡的總結:

Apr處理請求最快,Nio次之,Bio最慢;

Apr寬帶佔用最高,Bio最低;但Apr的內存佔用最高,而Nio的內存佔用最低

所以綜合來看,Nio適用於一般需求;Apr適用於高併發需求

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章