性能優化-Tomcat調優

通常我們的應用都是部署在tomcat中,那麼針對tomcat可以進行如下配置優化

刪減配置

  1. 移除conf/web.xml中的org.apache.catalina.servlets.DefaultServlet
  2. 移除conf/web.xml中的org.apache.jasper.servlet.JspServlet
    JspServlet:編譯並且執行Jsp頁面
    DefaultServlet:處理靜態資源
    視情況而定,不需要處理Jsp和靜態資源時即可移除掉
  3. 移除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>
    
  4. 如果程序是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>
    
  5. 移除conf/web.xml中的session-config
    <session-config>
    	<session-timeout>30</session-timeout>
    </session-config>
    
  6. 移除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 &quot;%r&quot; %s %b" />
    

配置調整

  1. 關閉自動重載
    conf/server.xml中Context元素的reloadable=false
    <Context docBase="D:/compile/demo" reloadable="false">
    </Context>
    
  2. 修改連接線程池數量
    conf/server.xml中的Executor
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>
    

JVM調優

  1. 內存設置
    JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m"

  2. 調整GC算法
    如果JAVA版本小於9,默認PS MarkSweep,可選設置CMS、G1。
    如果JAVA9的話,默認G1


Springboot下的tomcat參數設置

  1. 繼承WebServerFactoryCustomizer類
public class TomcatConfiguration implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {
    @Override
    public void customize(ConfigurableWebServerFactory factory) {
        factory.setPort(8080);
    }
}
  1. 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
發佈了36 篇原創文章 · 獲贊 28 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章