记录性能问题排查及jvm调优思路

只要业务逻辑代码写正确,处理好业务状态在多线程的并发问题,很少会有调优方面的需求。最多就是在性能监控平台发现某些接口的调用耗时偏高,然后再发现某一SQL或第三方接口执行超时之类的。如果你是负责中间件或IM通讯相关项目开发,或许就需要偏向CPU、磁盘、网络及内存方面的问题排查及调优技能。

根据这么多年性能压测积累的经验,归纳提炼了以下几点排查调优思路:
CPU过高,怎么排查问题
linux内存
磁盘IO
网络IO
java 应用内存泄漏和频繁 GC
java 线程问题排查
常用 jvm 启动参数调优

一、服务器CPU 过高,怎么排查问题?

对CPU 指标排查解析:

1、平均负载
  • 平均负载等于逻辑 CPU 个数,表示每个 CPU 都恰好被充分利用。如果平均负载大于逻辑 CPU 个数,则负载比较重
2、进程上下文切换
  • 无法获取资源而导致的自愿上下文切换
  • 被系统强制调度导致的非自愿上下文切换
3、CPU 使用率
  • 用户 CPU 使用率,包括用户态 CPU 使用率(user)和低优先级用户态 CPU 使用率(nice),表示 CPU在用户态运行的时间百分比。用户 CPU 使用率高,通常说明有应用程序比较繁忙 。
  • 系统 CPU 使用率,表示 CPU在内核态运行的时间百分比(不包括中断),系统 CPU 使用率高,说明内核比较繁忙
  • 等待 I/O 的 CPU 使用率,通常也称为iowait,表示等待 I/O 的时间百分比。iowait 高,说明系统与硬件设备的 I/O 交互时间比较长
  • 软中断和硬中断的 CPU使用率,分别表示内核调用软中断处理程序、硬中断处理程序的时间百分比。它们的使用率高,表明系统发生了大量的中断

查看系统的平均负载

在这里插入图片描述

  • 10:54:52 是当前时间;up 1124 days, 16:31 是系统运行时间;6 users
    则是正在登录用户数。而最后三个数字依次是过去 1 分钟、5 分钟、15 分钟的平均负载(Load Average)。平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数 。
  • 当平均负载高于 CPU 数量 70%的时候,就应该分析排查负载高的问题。一旦负载过高,就可能导致进程响应变慢,进而影响服务的正常功能
  • 平均负载与 CPU 使用率关系 :
    1、CPU密集型进程,使用大量 CPU 会导致平均负载升高,此时这两者是一致的;
    2、 I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU使用率不一定很高;
    3、大量等待 CPU 的进程调度也会导致平均负载升高,此时的 CPU 使用率也会比较高;

CPU 上下文切换

  • 进程上下文切换:
    1、进程的运行空间可以分为内核空间和用户空间,当代码发生系统调用时(访问受限制的资源),CPU 会发生上下文切换,系统调用结束时,CPU 则再从内核空间换回用户空间。一次系统调用,两次 CPU 上下文切换。
    2、系统平时会按一定的策略调用进程,会导致进程上下文切换。
    3、进程在阻塞等到访问资源时,也会发生上下文切换。
    4、进程通过睡眠函数挂起,会发生上下文切换
    5、当有优先级更高的进程运行时,为了保证高优先级进程的运行,当前进程会被挂起
  • 线程上下文切换:
    1、同一进程里的线程,它们共享相同的虚拟内存和全局变量资源,线程上下文切换时,这些资源不变。
    2、线程自己的私有数据,比如栈和寄存器等,需要在上下文切换
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值