博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
美团分享总结:系统性能优化之道
阅读量:5304 次
发布时间:2019-06-14

本文共 852 字,大约阅读时间需要 2 分钟。

典型性能问题

  1. 响应慢:你这个服务, 总是响应超时,尽快解决下!
  2. 单机容量低:就这么点量, 还要加机器?
  3. 并发能力弱:这个服务并发怎么上不去呢, 查下为啥

性能优化方法论

数据驱动

系统诊断

如何选择工具

性能工具

性能诊断层次

  • 系统层:OS JVM CPU Memory Network Disk | top jstat iftop iostat dstat...
  • 组件层:Jetty DB Driver JSON Lib... | JProfiler Mtrace
  • 业务层: 业务逻辑 数据结构 算法 | 日志 Jstack Greys

例子:首页超时了

  • 排查网关问题
    • 网络延迟数据
  • 排查后端服务问题
    • 从接入层(API层)开始检查, 首页调用链各个环节的延迟, 负载指标
    • 假设其中一个环节(比如POI 服务负载高, 响应异常). 检查服务器系统指标, OCTO 性能指标, CAT 监控数据, 日志数据

参考手册

单机容量上不去

CPU

  • 如何识别:load、cpu使用率、 CPU.Steal()
  • 如何诊断
    • top -bH -p -n 1 | head -n10
    • stack
    • jstat
    • JProfiler (能够精确定位,可以定位到具体代码消耗多少时间)

      内存

  • 如何识别:mem指标、swap、jvm.gc.count …
  • 如何诊断:
    • jstat
    • jmap
  • 精确定位:MAT

    网络

  • 如何识别:net.if.*; TcpExt.ListenOverflows ;
  • 如何诊断:
    • netstat
    • iftop

响应时间慢

下游依赖方

db、缓存、服务

同步调用

逻辑实现

  • 循环调用
  • 本地方法耗时过长 Greys可以分析耗时

并发上不去

  • 资源瓶颈:线程池,连接池 (JProfiler检查线程)
  • 资源竞争:cpu切换,锁 (线程池并发模型 -> 异步并发模型)

Java 快速诊断性能瓶颈, 首选 JProfiler

转载于:https://www.cnblogs.com/chenatu/p/10794587.html

你可能感兴趣的文章
机器视觉:SSD Single Shot MultiBox Detector
查看>>
201521123044 《Java程序设计》第1周学习总结
查看>>
MIT Scheme 的基本使用
查看>>
程序员的“机械同感”
查看>>
在16aspx.com上下了一个简单商品房销售系统源码,怎么修改它的默认登录名和密码...
查看>>
c++回调函数
查看>>
linux下Rtree的安装
查看>>
【Java】 剑指offer(53-2) 0到n-1中缺失的数字
查看>>
Delphi中ListView类的用法
查看>>
多米诺骨牌
查看>>
Linq 学习(1) Group & Join--网摘
查看>>
asp.net 调用前台JS调用后台,后台掉前台JS
查看>>
Attribute(特性)与AOP
查看>>
苹果手表:大方向和谷歌一样,硬件分道扬镳
查看>>
Competing Consumers Pattern (竞争消费者模式)
查看>>
Android面试收集录15 Android Bitmap压缩策略
查看>>
PHP魔术方法之__call与__callStatic方法
查看>>
ubuntu 安装后的配置
查看>>
web前端之路,js的一些好书(摘自聂微东 )
查看>>
【模板】对拍程序
查看>>