欢迎您的访问
专注于分享最有价值的互联网技术干货

Tomcat 优化和性能监测

几个T的资料等你来白嫖
双倍快乐

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 软件。

赞(0) 打赏
版权归原创作者所有,任何形式转载请联系我们:大白菜博客 » Tomcat 优化和性能监测

评论 抢沙发

5 + 2 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏