通常我們的應用都是部署在tomcat中,那麼針對tomcat可以進行如下配置優化
刪減配置
- 移除conf/web.xml中的org.apache.catalina.servlets.DefaultServlet
- 移除conf/web.xml中的org.apache.jasper.servlet.JspServlet
JspServlet:編譯並且執行Jsp頁面
DefaultServlet:處理靜態資源
視情況而定,不需要處理Jsp和靜態資源時即可移除掉 - 移除conf/web.xml中的welcome-file-list
<welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
- 如果程序是REST JSON、Content-Type或者MIME TYPE:application/json時移除conf/web.xml中的mime-mapping
<mime-mapping> <extension>123</extension> <mime-type>application/vnd.lotus-1-2-3</mime-type> </mime-mapping> <mime-mapping> <extension>3dml</extension> <mime-type>text/vnd.in3d.3dml</mime-type> </mime-mapping> <mime-mapping> <extension>3ds</extension> <mime-type>image/x-3ds</mime-type> </mime-mapping>
- 移除conf/web.xml中的session-config
<session-config> <session-timeout>30</session-timeout> </session-config>
- 移除Valve
valve作用打印accesslog,可以通過nginx的AccessLog打印該日誌<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
配置調整
- 關閉自動重載
conf/server.xml中Context元素的reloadable=false<Context docBase="D:/compile/demo" reloadable="false"> </Context>
- 修改連接線程池數量
conf/server.xml中的Executor<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/>
JVM調優
-
內存設置
JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m" -
調整GC算法
如果JAVA版本小於9,默認PS MarkSweep,可選設置CMS、G1。
如果JAVA9的話,默認G1
Springboot下的tomcat參數設置
- 繼承WebServerFactoryCustomizer類
public class TomcatConfiguration implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {
@Override
public void customize(ConfigurableWebServerFactory factory) {
factory.setPort(8080);
}
}
- application.properties
#線程池
server.tomcat.max-threads=200
server.tomcat.min-spare-threads=10
#取消JspServlet
server.jsp-servlet.registered=false
#取消 AccessLogValve
server.tomcat.accesslog.enabled=false