Tomcat 优化和性能监测

Posted @jason

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat 优化和性能监测相关的知识,希望对你有一定的参考价值。

1. JVM 优化(Tomcat 启动行参数)
Linux 修改 catalin.sh
Windows 修改 catalin.bat
 
Linux系统中tomcat的启动参数
export JAVA_OPTS="-server -Xms1400M -Xmx1400M -Xss512k -XX:+AggressiveOpts 
-XX:+UseBiasedLocking -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+DisableExplicitGC
-XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection
-XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true "
Windows系统中tomcat的启动参数
技术分享
set JAVA_OPTS=-server -Xms1400M -Xmx1400M -Xss512k 
-XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=128M
-XX:MaxPermSize=256M -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m
-XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly
-Djava.awt.headless=true
技术分享
 
-server 生产环境必须添加此参数,可以改变 Tomcat 的运行模式,更大、更高的并发处理能力,更快更强捷的JVM垃圾回收机制,可以获得更多的负载与吞吐量。
 
-Xms–Xmx JVM内存设置,建议设置成同一个值,可以在命令行中使用 java -Xmx1500m -version 来测试当前服务器可以设置的最大内存。(-Xmx 的值太大时,JVM 无法启动)
 
-Xmn 年轻代 整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m。
 
-Xss 是指设定每个线程的堆栈大小。一般不超过 1M。
 
-XX:+AggressiveOpts 根据 JDK 的不同而采用不同的优化策略。
 
-XX:+UseBiasedLocking 优化线程锁。
 
-XX:PermSize=128M-XX:MaxPermSize=256M 非堆内存初始值和最大值。默认值为物理内存的 1/64 和 1/4。
 
-XX:+DisableExplicitGC 控制程序代码中不允许显示调用 System.gc()。
 
-XX:+UseParNewGC 对年轻代采用多线程并行回收,这样收得快。
 
-XX:+UseConcMarkSweepGC 使用更好的 GC 技术。
 
-XX:+CMSParallelRemarkEnabled 在使用UseParNewGC 的情况下, 尽量减少 mark 的时间
 
-XX:+UseCMSCompactAtFullCollection 减少 Memory 碎片。
 
-XX:LargePageSizeInBytes 指定 Java heap 的分页页面大小
 
-XX:+UseFastAccessorMethods get,set 方法转成本地代码
 
-XX:+UseCMSInitiatingOccupancyOnly 指示只有在 oldgeneration 在使用了初始化的比例后concurrent collector 启动收集
 
-XX:CMSInitiatingOccupancyFraction=70 年老代到 70% 满的时候开始执行对年老代的并发垃圾回收((Xmx-Xmn)*(100- CMSInitiatingOccupancyFraction)/100>=Xmn)
 
-Djava.awt.headless=true 解决图片在 Linux 上无法显示图片的问题
 
2.Tomcat容器内的优化
修改 server.xml文件
技术分享
<Connector port="8080" protocol="HTTP/1.1"
  URIEncoding="UTF-8" minSpareThreads="25" maxSpareThreads="75"
  enableLookups="false" disableUploadTimeout="true" connectionTimeout="20000"
  acceptCount="300" maxThreads="300" maxProcessors="1000" minProcessors="5"
  useURIValidationHack="false"
  compression="on" compressionMinSize="2048"
  compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
  redirectPort="8443"
/>
技术分享
 
URIEncoding="UTF-8"
 
maxSpareThreads 最大空闲线程数,大于这个数将终止多余的线程。
 
minSpareThreads 初始化线程数。
 
enableLookups 不使用 Look。
 
connectionTimeout 连接超时毫秒数。
 
maxThreads 即 Tomcat 可创建的最大的线程数,即最大并发数。
 
acceptCount 当线程数达到maxThreads后,后续请求会被放入一个等待队列,这个acceptCount是这个队列的大小,如果这个队列也满了,就直接refuse connection。
 
maxProcessors与minProcessors 最大线程数和最小线程数。
 
useURIValidationHack 减少对一些url的不必要的检查从而减省开销。
 
enableLookups="false" 关闭DNS查询。
 
disableUploadTimeout 
 
compression 给Tomcat配置gzip压缩(HTTP压缩)功能。
 
3.Tomcat 性能检测
 
VisualVM监控( JDK 自带)
推荐使用。
内存分析,CPU 分析,线程分析等。
 
LambdaProbe监控
需要打成 war 放入 tomcat webapp 目录下。
 
JProfiler监控
商业的主要用于检查和跟踪系统的性能的工具。需要在服务器端安装 JProfiler 软件。
 






以上是关于Tomcat 优化和性能监测的主要内容,如果未能解决你的问题,请参考以下文章

linux性能监测与优化

tomcat 性能调优

Linux按照CPU内存磁盘IO网络性能监测转载

Linux按照CPU内存磁盘IO网络性能监测

Tomcat性能优化及JVM内存工作原理

好书摘要性能优化中CPU内存磁盘IO网络性能的依赖