JVM调优实践-Tomcat调优
调优几个重要指标
GC频率
提升每次GC的效率
准备环节
jmeter的配置
未压测前JVM配置
工程未调优前配置
-Xms400m
-Xmx400m
-XX:PermSize=64m
-XX:MaxNewSize=128m
-XX:MaxPermSize=128m
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
-Xloggc:gc.log
环境配置
Tomcat在台式机上
每次压测前清除gc.log,重启Tomcat
分钟
结果分析
通过GC日志分析GC频率
根据Jmeter结果记录吞吐率,平均响应速度,等
借助工具
Jmeter,对tomcat进行压力测试,模拟用户请求
Java VisualVM,对JVM进行性能监控,做时间记录,CPU使用情况记录。
Gchisto GC日志分析工具
压测过程
第一次压测
压测前通过VisualVM看到的jvm图表
压测20分钟后
GC日志
次
次
Jmeter结果
第二次压测
增大堆内存,新生代内存,以减小GC频率
-Xms600m
-Xmx600m
-XX:PermSize=128m
-XX:MaxNewSize=200m
-XX:MaxPermSize=128m
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
-Xloggc:gc.log
压测后GC日志
JVM图表
Jmeter结果图表
第三次压测
减少每次GC的时间
-Xms600m
-Xmx600m
-XX:PermSize=128m
-XX:MaxNewSize=200m
-XX:MaxPermSize=128m
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
-Xloggc:gc.log
-Xverify:none
-XX:+UseConcMarkSweepGC 使用CMS垃圾收集器
-XX:ParallelCMSThreads=8 并行的CMS线程数为8个
-XX:+UseCMSCompactAtFullCollection 在FullGC的时候压缩内存
-XX:CMSFullGCsBeforeCompaction=0 每执行多少次FullGC,执行一次内存压缩
-XX:+UseParNewGC 新生代回收也用并行回收
GC日志
JVM图表
Jmeter压测结果
结论
通过调整JVM新生代与老年代内存占比与大小,还有GC的回收器,可以增加程序的吞吐,提高程序的处理能力。
最新文章
- jQuery1.11源码分析(1)-----Sizzle源码概览[原创]
- CSS3动画特效——transform详解
- 【BZOJ-2115】Xor 线性基 + DFS
- weblogic无需用户名密码启动Server
- 为CDH 5.7集群添加Kerberos身份验证及Sentry权限控制
- 在spring,mybatis整合配置中走的弯路(1)
- PHP5中PDO的简单使用
- 实现 像网易云音乐 播放列表那样的弹出型Dialog
- WeifenLuo.WinFormsUI.Docking";的使用 z
- Bluebird-Core API (三)
- CloudTest 事务监控:千呼万唤始出来
- 经典SQL语句大全之数据开发
- 路由器刷机常见第三方固件及管理前端种类(OpenWrt、Tomato、DD-Wrt)
- python对象(腌制)
- OpenRisc-45-or1200的ID模块分析
- OC-多线程安全隐患及一般解决办法
- java HTTP请求 DefaultHttpClient is deprecated
- 【外文翻译】使用Timer类去调度任务 ——java
- 【Unity与23种设计模式】观察者模式(Observer)
- ES5-ES6-ES7_Promise对象详解