tomcat8之强力优化配置篇章(主要包括tomcat的一些优化配置参数)

1、前言

tomcat是项目开发过程中的重要组件,它的一些参数配置对于服务的消耗起着重要的作用,那么该如何配置和调优参数呢,这里所有的参数都使用jmeter并发测试并且调试,当然不一定是最优的了。本篇章只是总结。

2、正文

1、在服务器上部署一个tomcat8并且修改webapps/manager/META-INF/context.xml的内容,将value的内容注释掉,然后重启。

tomcat8之强力优化配置篇章(主要包括tomcat的一些优化配置参数)

 2、此时访问tomcat就可以看到服务信息了。至于用户名密码可以自己去配置了。

tomcat8之强力优化配置篇章(主要包括tomcat的一些优化配置参数)

3、从上图可以看出ajp连接。默认占用端口8009,一般ajp协议是面向包的,使用nginx+tomat时此协议是用不到的。

3、优化内容

优化1:禁用ajp协议

操作方法:进入tomcat的server.xml文件中将ajp服务的相关协议位置注释掉即可。

tomcat8之强力优化配置篇章(主要包括tomcat的一些优化配置参数)

 优化2:使用执行器线程池

最佳配置参数:800、100、100

 操作方法:任然进入server.xml配置文件中,修改如下位置

tomcat8之强力优化配置篇章(主要包括tomcat的一些优化配置参数)

 优化3:apr的配置,可以参考此文章配置,这里在不详解

优化4:连接器优化配置

最佳配置参数

tomcat8之强力优化配置篇章(主要包括tomcat的一些优化配置参数)

优化5:调整jvm的参数

最优参数:

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

 

在/bin/catalina.sh文件第一行添加如下参数,gc日志输出到/logs/gc.log

 tomcat8之强力优化配置篇章(主要包括tomcat的一些优化配置参数)

 参数说明:

file.encoding 默认文件编码

-Xmx1024m 设置JVM最大可用内存为1024MB

-Xms1024m 设置JVM最小内存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

-XX:NewSize 设置年轻代大小

-XX:MaxNewSize 设置最大的年轻代大小

-XX:PermSize 设置永久代大小

-XX:MaxPermSize 设置最大永久代大小

-XX:NewRatio=4 设置年轻代(包括Eden和两个Survivor区)与终身代的比值(除去永久代)。设置为4,则年轻代与终身代所占比值为1:4,年轻代占整个堆栈的1/5

-XX:MaxTenuringThreshold=0 设置垃圾最大年龄,默认为:15。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。

-XX:+DisableExplicitGC 这个将会忽略手动调用GC的代码使得System.gc()的调用就会变成一个空调用,完全不会触发任何GC。

gc日志生成后可以用https://gceasy.io/上载日志查看是否存在问题

tomcat8之强力优化配置篇章(主要包括tomcat的一些优化配置参数)

 分析结果:

tomcat8之强力优化配置篇章(主要包括tomcat的一些优化配置参数)

 优化后再看服务器状态

tomcat8之强力优化配置篇章(主要包括tomcat的一些优化配置参数)

 上述文章就是对tomcat的优化配置的粗略解释,当然这里不一定是最优配置,可以在使用的过程中不断的总结,将参数配置到最优化,这里只是通过自动工具测试得到的结果,以及jvm分析等结果。