tomcat优化
Posted 陈晓婵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat优化相关的知识,希望对你有一定的参考价值。
通过优化tomcat提高网站的并发能力,服务器所能提供CPU,内存,硬盘的性能对处理能力有决定性影响.本文通过优化配置,禁用AJP连接器,JVM参数的优化三个方面来讲解tomcat优化.
1.优化配置
1)配置tomcat管理员账户
在conf/ tomcat-users.xml下添加用户:<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"/>
启动tomcat,登录查看信息:
http://127.0.0.1:8080/
2)tomcat的3种运行模式 tomcat的运行模式有3种:
1、 bio
默认的模式,性能非常低下,没有经过任何优化处理和支持.
2、 nio
利用java的异步io护理技术,no blocking IO技术.
3、 apr
安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能. (1)启动NIO模式
修改server.xml里的Connector节点,修改protocol为org.apache.coyote.http11.Http11NioProtocol
3)执行器(线程池)
在tomcat中每一个用户请求都是一个线程,所以可以使用线程池提高性能。
(1)开启并且使用 配置:
实践:
参数说明: maxThreads(最大线程数)
minSpareThreads(最小活跃线程数)
maxQueueSize(最大的等待队里数,超过则请求拒绝)
prestartminSpareThreads(是否在启动时就生成minSpareThreads个线程)
4)连接器(connector)
2.禁用AJP连接器
AJP(Apache JServer Protocol)
AJPv13协议是面向包的。WEB服务器和Servlet容器通过TCP连接来交互;为了节省SOCKET创建的昂贵代价,WEB服务器会尝试维护一个永久TCP连接到servlet容器,并且在多个请求和响应周期过程会重用连接。
我们一般使用nginx+tomcat的架构,所以用不着AJP协议,所以把AJP连接器禁用.
3.JVM参数的优化 适当调整tomcat的运行JVM参数可以提升整体性能.
修改文件:bin/catalina.sh
JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewRatio=2 -XX:MaxTenuringThreshold=50 -XX:+DisableExplicitGC"
参数说明:
1、 file.encoding 默认文件编码
2、 -Xmx1024m 设置JVM最大可用内存为1024MB
3、 -Xms1024m 设置JVM最小内存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
4、 -XX:NewSize 设置年轻代大小
5、 XX:MaxNewSize 设置最大的年轻代大小
6、 -XX:PermSize 设置永久代大小
7、 -XX:MaxPermSize 设置最大永久代大小
8、 -XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与终身代的比值(除去永久代)。设置为4,则年轻代与终身代所占比值为1:4,年轻代占整个堆栈的1/5
9、 -XX:MaxTenuringThreshold=0:设置垃圾最大年龄,默认为:15。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。
10、 -XX:+DisableExplicitGC这个将会忽略手动调用GC的代码使得 System.gc()的调用就会变成一个空调用,完全不会触发任何GC
在tomcat中设置JVM参数 windows中: 修改bin/catalina.bat文件设置参数(第一行)
set JAVA_OPTS=-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx2048m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC
linux中: 修改bin/catalina.sh文件参数(第一行)
JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx2048m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC"
以上是关于tomcat优化的主要内容,如果未能解决你的问题,请参考以下文章