一、配置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.查看聚合报告(重点看吞吐量)