v5tech / notes

notes
https://ameizi.gitee.io/notes
MIT License
1.52k stars 378 forks source link

Tomcat性能调优 #158

Open v5tech opened 7 years ago

v5tech commented 7 years ago

1、修改JVM参数

catalina.bat中添加如下配置

set "JAVA_OPTS=%JAVA_OPTS% -server -Xms4096m -Xmx4096m -Xmn2048m -Xss512k -XX:PermSize=128m -XX:MaxPermSize=512m -XX:NewSize=1024m -XX:MaxNewSize=2048m -XX:MaxDirectMemorySize=4096m -XX:ReservedCodeCacheSize=240M -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:MaxTenuringThreshold=15 -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:-UseBiasedLocking -XX:-UseCounterDecay -XX:AutoBoxCacheMax=20000 -XX:+AlwaysPreTouch -XX:-OmitStackTraceInFastThrow -XX:SurvivorRatio=18 -XX:+UseParNewGC -XX:ParallelGCThreads=4 -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:+ScavengeBeforeFullGC -XX:+CMSClassUnloadingEnabled -XX:+PrintGCApplicationConcurrentTime -XX:+PrintHeapAtGC -XX:ErrorFile=../logs/hs_err_%p.log -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=../logs/ -Xloggc:../logs/gc.log -Djava.awt.headless=true"

2、设置tomcat管控台用户

切记:该步骤不可在线上生产环境配置。此处配置仅仅只是用于测试环境查看tomcat管控台详情

tomcat-users.xml

<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="admin-gui,manager-gui"/>

3、修改server.xml

<Server port="-1" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="3000" minSpareThreads="1000" maxIdleTime="600000"
        prestartminSpareThreads="true" maxQueueSize="2000"/>

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
               executor="tomcatThreadPool"
               connectionTimeout="20000"
               redirectPort="8443"
               URIEncoding="UTF-8"  
               enableLookups="false" 
               disableUploadTimeout="true"
               maxHttpHeaderSize="8192"
               maxConnections="10000"
               maxPostSize="10485760"              
               acceptCount="2000"
               acceptorThreadCount="2"             
               compression="on"
               server="Neo App Srv 1.0"            
               compressionMinSize="2048"
               compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript"/>

4、隐藏tomcat版本

修改TOMCAT_HOME\lib\catalina.jar文件中org/apache/catalina/util/ServerInfo.properties文件内容如下

server.info=Apache Tomcat
server.number=0.0.0
server.built=

5、禁用AJP

若不集成Apache建议禁用AJP协议以提升效率

<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->

最终效果: 20170107210723 20170107210708 20170107210629 20170107210641