首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >JVM-调优思路

JVM-调优思路

原创
作者头像
王二蛋
发布2024-07-30 11:33:14
发布2024-07-30 11:33:14
1740
举报

什么是调优

  1. 根据需求进行JVM规划和预调优
  2. 优化JVM运行坏境
  3. 解决JVM运行过程中出现的各种OOM

基础概念

  1. 吞吐量:用户代码执行时间/(用户代码执行时间+垃圾回收时间)
  2. 响应时间:STW(stop the word)越短,响应时间越好

首先要确定追求什么?吞吐量优先还是响应时间优先?还是在满足一定的响应时间的情况下,要求达到多大的吞吐量

  • 吞吐量优先的一般选择(PS+PO)垃圾回收器
  • 响应时间优先一般选用G1垃圾回收器

从规划开始

  • 熟悉业务场景,选择垃圾回收器
  • 计算内存需求
  • 选定CPU
  • 设置年代大小
  • 设定日志参数
GC日志参数
GC日志参数
  • 观察日志情况

案例分析

  1. 原服务器1.5G堆,网站比较缓慢.服务器升级后16G堆,反而效率更低.
    • 问题分析1:为什么网站会慢? 原因:用户量大,内存不足,频繁GC,STW长
    • 问题分析2:为什么更慢? 原因:内存越大,FGC时间约长,STW越长
    • 调优方案:ps换成CMS或者G1
  2. 系统CPU经常100%,如何调优
    • 问题分析:一定有线程(工作线程|垃圾回收线程)占用系统资源
    • 找出哪个进程cpu高
    • 该进程中的哪个线程CPU高(top -Hp)
    • 导出线程的堆栈(jstack)
    • 查找哪个方法的消耗时间(jstack)
  3. 系统内存飙升,如何查找问题
    • 导出堆内存(jmap)
    • 分析(mat、jvisualvm)

解决JVM问题常用命令

  1. top观察CPU、内存高居不下的进程
  2. top -Hp <pid> 查看进程中的线程
  3. jstack 定位线程状况,重点关注:WAITING、BLOCKED
  4. jmap -histo <pid> | head -20 查找有多少对象产生
  5. jmap -dump:format=b,file=xxx.hprof <pid>

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是调优
  • 基础概念
  • 从规划开始
  • 案例分析
  • 解决JVM问题常用命令
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档