Skip to content

Latest commit

 

History

History
91 lines (60 loc) · 1.94 KB

01-性能优化概述.md

File metadata and controls

91 lines (60 loc) · 1.94 KB

性能优化概述

一 背景说明

  1. 生产环境中出现的问题

    • 发生内存泄漏如何处理?
    • 给服务器分配多少内存合适?
    • 如何对垃圾回收器进行性能调优?
    • 生产环境中CPU负载过高如何处理?
    • 生产环境该给应用分配多少线程?
    • 不加log,如何确定请求执行到了某一行代码?
    • 不加log,如何实时查看某个方法的入参与返回值?
  2. 为什么要调优?

    • 防止出现OOM
    • 解决OOM
    • 减少Full GC的频率
  3. 不同阶段的考虑

    • 上线前
    • 运行阶段
    • 线上出现OOM

二 调优概述

  1. 监控的依据

    • 运行日志
    • 异常堆栈
    • GC日志
    • 线程快照
    • 堆转存快照
  2. 调优的大方向

    • 合理编写代码
    • 充分并合理使用硬件资源
    • 合理的进行JVM调优

四 性能优化的步骤

  1. 发现问题(性能监控)

    • GC频率
    • CPU负载过高
    • OOM
    • 内存泄漏
    • 死锁
    • 响应时间过长
  2. 排查问题(性能分析)

    • 打印GC日志,分析GC日志
    • 导出dump文件 进行分析
    • 使用第三方的工具查看JVM状态
    • jstack查看堆栈信息
  3. 解决问题(性能调优)

    • 增加内存 根据业务背景选择GC器
    • 优化代码 控制内存使用
    • 增加机器,分散节点压力
    • 合理设置线程数量
    • 使用中间件提高效率,缓存,消息队列等

五 性能评价/测试指标

  1. 停顿时间

    • 定义:

    ​ 提交请求和返回响应之间的时间,(一般关注平均值)

    • 在垃圾回收时,STW的时间。
  2. 吞吐量

    • 对单位时间内完成的工作量的量度
    • 在GC中,表示用户代码执行时间占总运行时间的比例。
  3. 并发数

    • 同一时刻,对服务器有实际交互的请求数
  4. 内存占用

    • 堆所占的内存大小