美文网首页
调优进阶

调优进阶

作者: zzj0990 | 来源:发表于2020-12-26 21:19 被阅读0次

什么是调优?

根据需求进行JVM规划和预调优

优化运行JVM运行环境(慢,卡顿)

解决JVM运行过程中出现的各种问题(OOM)

调优,从规划开始

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

无监控(压力测试,能看到结果),不调优

步骤:

   1.熟悉业务场景(没有最好的垃圾回收器,只有最合适的垃圾回收器)

      响应时间、停顿时间 [CMS G1 ZGC] (需要给用户作响应)

      吞吐量 = 用户时间 /( 用户时间 + GC时间) [PS]

  2.选择回收器组合

  3.计算内存需求(经验值 1.5G 16G)

  4.选定CPU(越高越好)

  5.设定年代大小、升级年龄

  6.设定日志参数

       -Xloggc:/opt/xxx/logs/xxx-xxx-gc-%t.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5  -XX:GCLogFileSize=20M -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCCause

       或者每天产生一个日志文件

 7.观察日志情况


案例分析:

案例1:垂直电商,最高每日百万订单,处理订单系统需要什么样的服务器配置?

这个问题比较业余,因为很多不同的服务器配置都能支撑(1.5G 16G)

1小时360000集中时间段, 100个订单/秒,(找一小时内的高峰期,1000订单/秒)

经验值,

非要计算:一个订单产生需要多少内存?512K * 1000 500M内存

专业一点儿问法:要求响应时间100ms

压测!

案例2:12306遭遇春节大规模抢票应该如何支撑?

12306应该是中国并发量最大的秒杀网站:

号称并发量100W最高

CDN -> LVS -> NGINX -> 业务系统 -> 每台机器1W并发(10K问题) 100台机器

普通电商订单 -> 下单 ->订单系统(IO)减库存 ->等待用户付款

12306的一种可能的模型: 下单 -> 减库存 和 订单(redis kafka) 同时异步进行 ->等付款

减库存最后还会把压力压到一台服务器

可以做分布式本地库存 + 单独服务器做库存均衡

大流量的处理方法:分而治之

怎么得到一个事务会消耗多少内存?

弄台机器,看能承受多少TPS?是不是达到目标?扩容或调优,让它达到

用压测来确定


优化环境

1. 有一个50万PV的资料类网站(从磁盘提取文档到内存)原服务器32位,1.5G 的堆,用户反馈网站比较缓慢,因此公司决定升级,新的服务器为64位,16G 的堆内存,结果用户反馈卡顿十分严重,反而比以前效率更低了

分析:

   1.1 为什么原网站慢? 很多用户浏览数据,很多数据load到内存,内存不足,频繁GC,STW长,响应时间变慢

   1.2 为什么会更卡顿? 内存越大,FGC时间越长

   1.3 咋办? PS -> PN + CMS 或者 G1

2. 系统CPU经常100%,如何调优?(面试高频) CPU100%那么一定有线程在占用系统资源,

    2.1 找出哪个进程cpu高(top)

    2.2 该进程中的哪个线程cpu高(top -Hp)

   2.3 导出该线程的堆栈 (jstack)

   2.4 查找哪个方法(栈帧)消耗时间 (jstack)

   2.5 工作线程占比高 | 垃圾回收线程占比高

3. 系统内存飙高,如何查找问题?(面试高频)

  3.1 导出堆内存 (jmap)

  3.2 分析 (jhat jvisualvm mat jprofiler ... )

4. 如何监控JVM

   4.1 jstat jvisualvm jprofiler arthas top...

相关文章

  • 调优进阶

    什么是调优? 根据需求进行JVM规划和预调优 优化运行JVM运行环境(慢,卡顿) 解决JVM运行过程中出现的各种问...

  • Java进阶架构之架构筑基面试题:JVM+Netty+并发编程

    架构筑基 Java程序性能优化 JVM性能调优 Linux基础与进阶 Mysql Tomcat 并发编程进阶 高性...

  • Android进阶知识点

    Android进阶 内部调优高效文件IO与网络IO微信全面调优内存和网络贴近实战之问题优化编程优化 高级音视频 [...

  • Java进阶-JVM-调优

    一、Java进阶-JVM-调优   jvm调优主要是针对垃圾收集器的收集性能优化,令运行在虚拟机上的应用能够使用更...

  • JVM调优

    1 调优层次 性能调优包含多个层次,比如:架构调优、代码调优、JVM调优、数据库调优、操作系统调优等。架构调优和代...

  • webpack使用手册

    《webpack实战-入门、进阶和调优》读后总结 webpack打包原理 最外层立即执行匿名函数。包裹bundle...

  • iOS进阶系列之调优篇

    (原文地址](http://wp.me/p7OxSd-5t)iOS进阶系列之调优篇上一篇文章iOS进阶系列之基础篇...

  • Twitter 工程师谈 JVM 调优

    一. 调优需要关注的几个方面 内存调优 CPU 使用调优 锁竞争调优 I/O 调优 二. Twitter 最大的敌...

  • kafka生产环境规划-kafka商业环境实战

    kafka线上真实环境实战及调优进阶系列 kafka 商业环境实战-kafka生产环境规划 kafka 商业环境实...

  • Spark性能优化-开发调优

    Spark性能优化分为四个方面: 1、开发调优2、资源调优3、数据倾斜调优4、shuffle调优 1. 开发调优 ...

网友评论

      本文标题:调优进阶

      本文链接:https://www.haomeiwen.com/subject/minynktx.html