tomcat调优

一、配置tomcat用户

1.修改tomcat配置文件

vim conf/tomcat-user.xml

2.写入如下内容

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

*3.如果是tomcat8还需要修改webapps/manager/META-INF/context.xml,把value中的内容注释掉

<Context antiResourceLocking="false" privileged="true">
<!‐‐<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.d+.d+.d+|::1|0:0:0:0:0:0:0:1"/>‐‐>
<Manager sessionAttributeValueClassNameFilter="java.lang.(?:Boolean|Integer|Long|Number|String)|org.apache.catalina.filters.CsrfPreventionFilter$LruCache(?:$1)?|java.util.(?:Linked)?HashMap"/>
</
Context>

4.访问http://localhost:8080,点击Server Status,然后输入用户名:tomcat密码:tomcat

二、tomcat调优

1.1禁用AJP

vim conf/server.xml

1.2注释该行

<Connectorport="8009" protocol="AJP/1.3" redirectPort="8443"/>

2.1使用线程池

vim conf/server.xml

2.2打开此注释

<Executor name="tomcatThreadPool" namePrefix="catalina-exec‐" maxThreads="500" minSpareThreads="50" prestartminSpareThreads="true" maxQueueSize="100"/>

maxThreads:最大并发数,默认设置200,一般建议在500~1000,根据硬件设施和业务来判断

minSpareThreads:Tomcat初始化时创建的线程数,默认设置25,仅当prestartminSpareThreads设置为true时生效

maxQueueSize,最大的等待队列数,超过则拒绝请求

2.3在Connector中设置executor属性指向上面的执行器

<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>

3.使用nio2(tomcat8支持,tomcat7可配置nio)

<Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000" redirectPort="8443"/>

4.修改tomcat的bin/catalina.sh。set虚拟机参数

1.1设置并行垃圾回收器

JAVA_OPTS="-XX:+UseParallelGC -XX:+UseParallelOldGC -Xms64m -Xmx512m 
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps 
-XX:+PrintHeapAtGC -Xloggc:../logs/gc.log"

1.2将gc.log上传到gceasy.io查看问题

 

 可以看到MinorGC较多,建议增大年轻代大小。FullGC也较多,建议增大堆内存大小

JAVA_OPTS="-XX:+UseParallelGC XX:+UseParallelOldGC -Xms128m -Xmx1024m 
-XX:NewSize=64m -XX:MaxNewSize=256m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps 
-XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:../logs/gc.log"

2.设置G1垃圾收集器

#设置了最大停顿时间100毫秒,初始堆内存128m,最大堆内存1024m
JAVA_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=100 -Xms128m -Xmx1024m 
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps 
-XX:+PrintHeapAtGC -Xloggc:../logs/gc.log"

三、使用JMeter测试

1.JMeter下载地址:http://jmeter.apache.org/download_jmeter.cgi。下载zip包

2.进入bin目录,找到jmeter.bat文件,双机打开即可启动进入bin目录,找到jmeter.bat文件,双机打开即可启动

 3.添加测试计划

 4.添加线程组,模拟用户并发

 5.设置线程数、单个线程请求时间间隔、每个线程循环请求次数

 

 6.添加http请求

 

7.添加请求监控,点击运行

8.查看聚合报告(重点看吞吐量)

 

原文地址:https://www.cnblogs.com/naixin007/p/13728670.html