资料来自:蚂蚁课堂,Tomcat性能调优
此篇文章主要记录下学习的技能,方便后期查阅。
Tomcat臃肿点
- 默认加载了一些我们实际开发用不到的组件,例如:
Jsp
- IO模型默认是
APR
,可能其他高版本是NIO
- 默认启用了
AJP
,内部通讯的集群,一直有10个线程在执行。
1:不需要视图层开发,也就是前后端分离,或者不需要Jsp的时候,关闭掉Jsp支持。
在conf.web.xml
中删掉以下两处配置。
如果不需要ROOT
目录的映射,还可以把DefaultServlet
也删掉。
2:在conf.web.xml
把欢迎页面也删掉,虽然作用不大。
3:在conf.web.xml
删除掉一些没必要的响应类型,虽然作用不大。
4:把AJP
的内部通讯删掉,这是用于tomcat集群的,实际开发用不到,它会开启一个线程池,内部有10个线程,一个在活跃,占用CPU
资源。
用JDK
自带的jconsole
工具查看tomcat
占用的线程.。
在conf/server.xml
中删除掉以上配置,就不会有ajp
相关的线程了,可以节省cpu资源。
3:NIO线程数配置,
name
:线程数配置名称/ID。namePrefix
:线程名称前缀。maxThreads
:最大线程数。minSpareThreads
:最小活跃线程数,一直处于活跃的线程。
在 Connector
中引用配置的线程数
用JDK
自带的jconsole
工具查看下,就只有4个线程保持活跃状态。
线程数配置需要根据生产实际并发情况,如果并发量高,可以把最小活跃线程数minSpareThreads
设置大一点
maxThreads
最大线程数,也就是并发量达到该值,其他线程需要等待,可以将该值设置minSpareThreads
它的好几倍,避免并发事,出现用户卡顿。
conf/server.xml
的Connector
参数配置可以查看该文章 Tomcat中Connector常用配置及问题解决
Tomcat运行内存配置:摘抄自 Tomcat内存优化
Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数。
JAVA_OPTS参数说明
-server 启用jdk 的 server 版;
-Xms java虚拟机初始化时的最小内存;
-Xmx java虚拟机可使用的最大内存;
-XX: PermSize 内存永久保留区域
-XX:MaxPermSize 内存最大永久保留区域
服务器参数配置
现公司服务器内存一般都可以加到最大2G ,所以可以采取以下配置
JAVA_OPTS=’-Xms1024m -Xmx2048m -XX: PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m’
配置完成后可重启Tomcat ,通过以下命令进行查看配置是否生效:
首先查看Tomcat 进程号:
sudo lsof -i:9027
我们可以看到Tomcat 进程号是 12222 。
查看是否配置生效:
sudo jmap – heap 12222
我们可以看到MaxHeapSize 等参数已经生效。