1.關閉AJP端口8009
在tomcat前再使用web服務器時,即便tomcat提供的都是靜態資源文件,情況都要比直接使用http連接差的多,如果確實有需要集成前置服務器,走AJP協議要比http協議性能更好。通常前置服務器有nginx做靜態伺服器和方向代理足矣,無需使用AJP,不用的資源直接關掉即可。
2.關閉access_log
外置tomcat服務器server.xml中會輸出access_log日誌,基本沒有什麼價值,可以關閉了。springboot中內置的tomcat默認就是關閉access_log的。
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
3.關閉無用的servlet
有些無用的servlet配置也可以去掉,例如未使用jsp可以關掉相關的配置。
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
4.war包與tomcat分離開
不要直接把war包上傳到webapps下發布,應該將war包放到指定的目錄,並在conf/Catalina/localhost目錄下添加相應的配置文件,內容如下。
<?xml version="1.0" encoding="UTF-8"?>
<Context path="" docBase="D:\demo.war" />
5.生產環境禁止啓用屬性的reloadable=true
reloadable是需要線程監聽程序文件修改的,然後重新加載web應用,默認值是false(不同版本可能有差異),開發測試可以啓用。
6.連接器connector使用線程池
server.xml文件中有註釋掉的相關配置,合理設置線程池最大值,最小值,最大連接數,超時時間等,可通過jemeter進行壓力測試,沒有放之四海皆準的配置。namePrefix可以自定義方便標識。
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-star-"
maxThreads="200" connectionTimeout="20000" minSpareThreads="10"/>
7.jsp預編譯
我們知道jsp是通過servlet寫出的,所以訪問jsp頁面會進行編譯操作,jsp->java->class,提前把jsp編譯成class可以減少運行時編譯,當然這需要因地制宜。
8.連接器配置protocal
設置協議處理傳入的流量,默認值是HTTP/1.1,tomcat會自動選擇apr(如果存在相關本地庫)或java nio,也可指定協議。
org.apache.coyote.http11.Http11NioProtocol -non blocking Java NIO connector
org.apache.coyote.http11.Http11Nio2Protocol -non blocking Java NIO2 connector
org.apache.coyote.http11.Http11AprProtocol -the APR/native connector.
9.合理設置JAVA_OPTS
相關設置需要結合服務器信息(內存,處理器等),可以打開gc日誌,使用jemeter壓測進行相應調整,適當調整各代大小減少gc。
set "JAVA_OPTS=%JAVA_OPTS% -server -Xms1024m -Xmx1024m -Xss512k -Xloggc:/star_gc.log -XX:+PrintGCDetails -XX:+UseG1GC"
10.有關session管理
如果有會話管理,可以直接使用tomcat生成的sessionId策略,無需自己再生成一套sessionId,或者實現SessionIdGenerator 定義自己的session管理,儘量減少重複性工作。
11 .增加Tomcat的內存
Tomcat默認使用最大內存爲128M,可以修改 tomcat/bin/Catalina.bat 文件增加其內存。
設置下面語句
set CATALINA_OPTS =-Xms512m –Xmx1024m
12. 禁用AJP協議
(1)通過禁用AJP協議,達到在集羣的時候提高處理請求的時間。
(2)啓動tomcat後,不論從剛剛的管理員界面,還是從控制檯上都可以看出,AJP協議是開啓的。我們要做的就是要將此協議禁用,禁用方法:在server.xml中,將
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
註釋掉,重新啓動tomcat即可