JVM-调优思路,实战经验
【摘要】 @[TOC] 基础概念吞吐量:用户代码执行时间/(用户代码执行时间+垃圾回收时间)响应时间:STW(stop the word)越短,响应时间越好首先要确定追求什么?吞吐量优先还是响应时间优先?还是 在满足一定的响应时间的情况下,要求达到多大的吞吐量.吞吐量优先的一般选择(PS+PO)垃圾回收器响应时间优先一般选用G1垃圾回收器 什么是调优根据需求进行JVM规划和预调优优化JVM运行坏境解决...
@[TOC]
基础概念
- 吞吐量:用户代码执行时间/(用户代码执行时间+垃圾回收时间)
- 响应时间:STW(stop the word)越短,响应时间越好
首先要确定追求什么?吞吐量优先还是响应时间优先?还是 在满足一定的响应时间的情况下,要求达到多大的吞吐量.
- 吞吐量优先的一般选择(PS+PO)垃圾回收器
- 响应时间优先一般选用G1垃圾回收器
什么是调优
- 根据需求进行JVM规划和预调优
- 优化JVM运行坏境
- 解决JVM运行过程中出现的各种OOM
从规划开始
- 熟悉业务场景,选择垃圾回收器
- 计算内存需求
- 选定CPU
- 设置年代大小
- 设定日志参数
- 观察日志情况
案例分析
- 原服务器1.5G堆,网站比较缓慢.服务器升级后16G堆,反而效率更低.
问题分析1:为什么网站会慢
用户量大,内存不足,频繁GC,STW长
问题分析2:为什么更慢
内存越大,FGC时间约长,STW越长
调优方案:ps换成CMS或者G1 - 系统CPU经常100%,如何调优
问题分析:一定有线程(工作线程|垃圾回收线程)占用系统资源- 找出那个进程cpu高
- 该进程中的哪个线程CPU高(top -Hp)
- 导出线程的堆栈(jstack)
- 查找哪个方法的消耗时间(jstack)
- 系统内存飙升,如何查找问题
- 导出堆内存(jmap)
- 分析(mat、jvisualvm)
解决JVM运行环境问题
- top观察CPU、内存高居不下的进程
- top -Hp <pid> 查看进程中的线程
- jstack 定位线程状况,重点关注:WAITING、BLOCKED
- jmap -histo <pid> | head -20 查找有多少对象产生
- jmap -dump:format=b,file=xxx.hprof <pid>
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)