Tomcat调优
1.部署安裝Tomcat
http://tomcat.apache.org/
?
-
將文件上傳到linux服務器中,解壓
-
修改配置文件,配置tomat的管理用戶
vim /conf/tomcat-users.xml
<role rolename="manager"/> <role rolename="namager-gui" /> <role rolename="admin"/> <role rolename="admin-gui"/> <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui,manager,admin"/> </tomcat-users>-
如果是tomcat7,現在就可以登錄了,但是tomcat還需要修改另一個配置文件
vim webapps/manager/META-INF/context.xml
#將value的內容注釋掉即可 ? <!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->-
啟動tomcat
進入tomcat的bin目錄,執行如下命令:
./startup.sh
然后就可以訪問了:
?
?
2.禁用AJP連接
在服務狀態頁面中可以看到,默認狀態下會啟用AJP服務,并且占用8009端口。
?
什么是AJP呢?
AJPv13協議是面向包的。WEB服務器和Servlet容器通過TCP連接來交互;為了節省SOCKET創建的昂貴代價,WEB服務器會嘗試維護一個永久TCP連接到Servlet容器,并且在多個請求和響應周期過程會重用連接。
我們一般是使用Nginx+tomcat的架構,所以不需要AJP協議
修改conf下的server.xml文件,將AJP服務禁用掉即可。
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->重啟tomcat,查看效果
可以看到AJP服務已經不存在了
3.線程池
在tomat中每一個用戶請求都是一個線程,所以可以使用線程池。
修改server.xml文件:
<!--參數說明:maxThreads:最大并發數,默認設置200,一般建議在500~1000,根據硬件和業務來判斷minSpareThreads:tomcat初始化時創建的線程數,默認設置25prestartminSpareThreads:在tomcat初始化的時候就初始化minSpareThreads的參數,如果不等于true,minSpareThreads的值就沒有效果maxQueueSize:最大的等待隊列數,超過則拒絕請求 --> ? ? ? ? <!-- 將注釋打開 --><Executor name="tomcatThreadPool" namePrefix="catalina-exec-"maxThreads="150" minSpareThreads="50"prestartminSpareThreads="true" maxQueueSize="100"/> ? ?<!-- 在Connector中設置executor屬性執行上面的線程池 --><Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />保存退出,重啟tomcat,查看效果。
在頁面上顯示最大線程數為-1,這個是正常的,僅僅是顯示的問題,實際使用的是指定的值
4.tomcat的3種運行模式
(1)bio
默認的模式,性能非常低下,沒有經過任何優化處理和支持
(2)nio
nio是Java SE 1.4及后續版本提供的一種新的I/O操作方式。Java nio是一個基于緩沖區、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的縮寫。它擁有比傳統I/O操作更好的并發運行性能。
(3)apr
安裝起來最困難,但是從操作系統級別來解決一步的IO問題,大幅度的提高性能
推薦使用nio,不過在tomcat8中有更新的nio2,速度更快,建議使用nio2
修改conf/server.xml
? ?<Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol"connectionTimeout="20000"redirectPort="8443" />重啟tomcat:
運行模式由nio變為nio2
之前的:
?
之后的:
?
總結
- 上一篇: 使用redis的zset实现排行榜
- 下一篇: mysql慢查询分析