JVM 什么是调优 ?

本文探讨了JVM调优的重要性,强调了确定计算优先级(吞吐量或响应时间)的必要性。调优分为规划、环境优化和问题解决三个阶段,涉及业务场景分析、内存计算、垃圾回收器选择等。通过垂直电商和12306抢票系统的案例,展示了不同业务需求下的服务器配置策略。同时,文章也提供了内存飙高和CPU占用率高的问题排查方法。
摘要由CSDN通过智能技术生成
  • 吞吐量: 用户代码执行时间/(用户代码执行时间 + 垃圾收集执行时间)
  • 响应时间 = 用户线程停顿的时间
  • STW越短 响应时间越短
    快 ============= 短
确定计算之前,应该确定到底是哪个优先,是计算型任务还是响应型任务
吞吐量优先还是响应时间优先,或者是在满足一定响应时间的基础上,要求达到多大的吞吐量

问题:
科学计算 吞吐量。数据挖掘,thrput。吞吐量优先的一般:(PS+PO)
响应时间:网站 GUI API (1.8 G1)

什么是调优? 分类

1、根据需求进行jvm规划和预调优(业务逻辑)
2、优化jvm运行环境(慢、卡顿)
3、解决jvm运行过程中出现的各种问题(解决oom问题)

调优,从规划开始

  • 调优从业务场景开始,没有业务场景的调优都是耍流氓

概念:QPS(query) 、TPS(transaction)
12306上百万并发

  • 无监控(压力测试,能看到结果)不调优
  • 步骤
    1、熟悉业务场景(没有最好的垃圾回收器,只有最合适的垃圾回收器)
    (1)响应时间、停顿时间 [CMS G1 ZGC] 需要给用户做响应
    (2)吞吐量 = 用户时间/(用户时间+响应时间)[PS]
    2、选定垃圾回收器组合
    3、计算内存需求(经验值1.5G16G)
    4、选定CPU(越高越好)
    5、设定年代大小、升级年龄
    6、设定日志参数
    (1)、-Xloggc:/pot/*/xxx.log -XX:+ -XX:+PrintGCCause
    (2)、或者每天产生一个日志文件
    7、观察日志参数
案例一:垂直电商(只卖某一类商品),最高每日百万订单,订单处理系统需要什么样的服务器配置

很多不同的服务器配置都能支撑服务器配置(1.5G 16G)

  • 最高峰时间 100个订单/秒,(找一小时内的高峰期,1000订单/秒)
  • 经验值 压力测试
  • 非要计算产生一个订单需要多少内存? 512K * 1000 500M内存
    (响应时间)
    专业一点问法:要求响应时间100ms
    压测!
案例二:12306遭遇春节大规模抢票应该如何支撑?

12306中国并发量最大的秒杀网站:
号称并发量100W最高
CDN-> LVS->NGINX->业务系统->每台机器1W并发(10k问题)100台机器
普通电商订单->下单->订单系统(IO)减库存->等待用户付款
12306的一种可能模型:下单-> 减库存和订单(redis、kafka)同时异步进行->等付款
减库存最后还会把压力压到一台服务器(RPC)
可以做分布式本地库存+单独服务器做库存均衡
大流量的处理方法:分而治之

优化环境

有一个50万pv的资料类网站原服务器源服务器32位,1.5G的堆,用户反馈网站比较缓慢,因此公司决定升级服务器64位,16G的堆,用户反馈网站卡顿十分严重,反而比以前效率更低了
1、为什么原网站慢,
很多用户浏览数据,很多数据load到内存,内存不足,频繁GC,STW时间长,响应时间变慢
2、为什么会更卡顿
内存越大,FGC时间越长
3、咋办?
PS -改为–> PN + CMS或者G1
如何优化

2、系统CPU经常100%,咋办?(面试高频)
cpu经常100%说明一定有线程在占用系统资源
(1)、找出哪个进程cpu高(top)
(2)、该进程中哪个线程cpu高(top -Hp)
(3)、导出该线程的堆栈(jstack)
(4)、查看哪个方法(栈帧)消耗时间(jstack)
(5)、工作线程占比高 | 垃圾回收线程占比高

3、系统中内存飙

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值