Tomcat的默認(rèn)配置嫉鲸,性能并不是最優(yōu)的,我們可以通過(guò)優(yōu)化tomcat以此來(lái)提高網(wǎng)站的并發(fā)能力苹祟,上篇文章已經(jīng)介紹了 tomcat優(yōu)化內(nèi)存显拳,這里將從其他方面繼續(xù)介紹tomcat的調(diào)優(yōu)窿克。
添加完用戶后,啟動(dòng)tomcat髓涯,瀏覽器訪問(wèn) http://IP:8080 點(diǎn)擊server status 查看信息
tomcat的運(yùn)行模式有3種:
bio:
默認(rèn)的模式,性能非常低下,沒(méi)有經(jīng)過(guò)任何優(yōu)化處理和支持.
nio:
nio(new I/O)袒啼,是Java SE 1.4及后續(xù)版本提供的一種新的I/O操作方式(即java.nio包及其子包)。Java nio是一個(gè)基于緩沖區(qū)纬纪、并能提供非阻塞I/O操作的Java API瘤泪,因此nio也被看成是non-blocking I/O的縮寫(xiě)。它擁有比傳統(tǒng)I/O操作(bio)更好的并發(fā)運(yùn)行性能育八。
apr:
安裝起來(lái)最困難,但是從操作系統(tǒng)級(jí)別來(lái)解決異步的IO問(wèn)題,大幅度的提高性能.
啟動(dòng)NIO模式
修改server.xml里的Connector節(jié)點(diǎn),修改protocol為
org.apache.coyote.http11.Http11NioProtocol
執(zhí)行器優(yōu)化(線程池)
在tomcat中每一個(gè)用戶請(qǐng)求都是一個(gè)線程对途,所以可以使用線程池提高性能。
開(kāi)啟并且使用,在Connector中指定使用共享線程池
配置:
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxHttpHeaderSize="8192"
maxThreads="1000"
minSpareThreads="100"
maxSpareThreads="1000"
minProcessors="100"
maxProcessors="1000"
enableLookups="false"
compression="on"
compressionMinSize="1024"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
connectionTimeout="25000"
URIEncoding="utf-8"
acceptCount="1000"
redirectPort="8443"
disableUploadTimeout="true" />
maxThreads 客戶請(qǐng)求最大線程數(shù)
minSpareThreads Tomcat初始化時(shí)創(chuàng)建的 socket 線程數(shù)
maxSpareThreads Tomcat連接器的最大空閑 socket 線程數(shù)
enableLookups 若設(shè)為true, 則支持域名解析髓棋,可把 ip 地址解析為主機(jī)名
redirectPort 在需要基于安全通道的場(chǎng)合实檀,把客戶請(qǐng)求轉(zhuǎn)發(fā)到基于SSL 的 redirectPort 端口
acceptAccount 監(jiān)聽(tīng)端口隊(duì)列最大數(shù),滿了之后客戶請(qǐng)求會(huì)被拒絕(不能小于maxSpareThreads )
connectionTimeout 連接超時(shí)
minProcessors 服務(wù)器創(chuàng)建時(shí)的最小處理線程數(shù)
maxProcessors 服務(wù)器同時(shí)最大處理線程數(shù)
URIEncoding URL統(tǒng)一編碼
禁用AJP連接器
AJP(Apache JServer Protocol)
AJPv13協(xié)議是面向包的按声。WEB服務(wù)器和Servlet容器通過(guò)TCP連接來(lái)交互膳犹;為了節(jié)省SOCKET創(chuàng)建的昂貴代價(jià),WEB服務(wù)器會(huì)嘗試維護(hù)一個(gè)永久TCP連接到servlet容器签则,并且在多個(gè)請(qǐng)求和響應(yīng)周期過(guò)程會(huì)重用連接须床。
我們一般是使用Nginx+tomcat的架構(gòu),所以用不著AJP協(xié)議渐裂,所以把AJP連接器禁用
在管理界面中看不到ajp了:
完成上面幾步對(duì)Tomcat的優(yōu)化配置豺旬,你的Tomcat服務(wù)器并發(fā)量肯定會(huì)有大幅度的提升.