Java web应用性能分析之【思考一个问题:%CPU低,Load avg>5,会出现这种情况吗,要命吗,是否要关注?】

125 篇文章 2 订阅
本文探讨了JavaWeb应用中CPU飙高现象,重点关注CPU利用率、上下文切换、I/O等待和负载等因素。分析了磁盘I/O压力、MySQL无索引查询、死锁和外接硬盘故障导致的性能问题,并提供了相应的优化方法。
摘要由CSDN通过智能技术生成

Java web应用性能分析之【CPU飙高分析之MySQL】-CSDN博客

Java web应用性能分析之【Linux服务器性能监控分析概叙】-CSDN博客

Java web应用性能分析概叙-CSDN博客

Java web应用性能分析之【基准测试】-CSDN博客

Java web应用性能分析之【sysbench基准测试】-CSDN博客

Java web应用性能分析之【CPU飙升分析概述】-CSDN博客

 CPU飙高的指标
        一般情况下,我们服务器的都比较空闲,因为cpu一般不是性能瓶颈。偶尔有进程的%cpu>100%,也是正常情况。毕竟是在多核cpu服务器上,进程里面起了多线程,%cpu>100%很正常。说明进程对CPU多核利用很充分。

        我们一般说cpu飙高,并不只是%CPU这一个参考值。上面“性能分析概叙”中有讲我们关注的点是下面这些,而且这些指标都是相互关联的,并不是某一项很高就说明有问题:

        cup利用率[us <70%,sy<35%,id>=95% ]
        cs每秒上下文切换次数,越小越好[cs<100];
                     cs和cpu利用率相关,如果能保持上面所说的利用率大量的切换可以接受

        %iowait <= 100/cpu核心 %,等待 io 的 cpu 时间占比,这个值将在磁盘监控中再讲。
        load avg运行队列/平均负载 [ load avg/cpu核心数 < 5]  (平均负载高有可能是cpu密集型任务)


思考一个问题:%CPU低,Load avg>5,会出现这种情况吗,要命吗,是否要关注?

        直接说结果,需要关注、这种情况也要命。在文件服务器、数据库服务器上可能出现这种情况:CPU低、Load高的问题,即系统的负载很高,但实际上CPU的使用率却很低。这可能是因为等待磁盘I/O完成的进程过多,导致进程队列长度过大,而实际上CPU运行的进程很少。

        如果不加以关注和处理,最终会导致整个应用卡顿。下面将介绍几种可能出现这种情况的场景,并给出相应的处理办法:

场景一:磁盘读写请求过多导致的问题

        当系统中磁盘读写请求过多时,CPU可能会被空闲等待磁盘I/O完成的进程所占用,从而导致CPU低、Load高的情况。这种情况下,我们可以通过查看CPU等待IO时间的命令(如top命令中的%wa),来判断磁盘读写请求是否过多。

解决方法:

        针对这种情况,我们可以优化磁盘访问的方式,如合并磁盘访问请求、使用更高性能的磁盘设备等。另外,我们也可以优化程序的磁盘访问方式,减少磁盘读写的频率,从而降低磁盘I/O的压力。

场景二:MySQL中存在没有索引的语句或存在死锁等情况

        在MySQL数据库中,如果执行的SQL语句没有合适的索引,或者存在死锁等情况,可能会导致大量的磁盘I/O等待,从而造成CPU低、Load高的问题。

解决方法:

        针对这种情况,我们可以通过检查MySQL数据库的慢查询日志或者执行SHOW  FULL  PROCESSLIST命令来查看是否存在没有索引的语句或者死锁情况。然后,我们可以对这些语句进行优化,添加合适的索引或解决死锁问题,从而减少对磁盘的访问。

场景三:外接硬盘故障

        如果我们的系统挂载了外接硬盘(如NFS共享存储),如果外接硬盘发生故障,可能会导致大量的读写请求无法完成,进而导致CPU低、Load高的情况。

解决方法:

        针对这种情况,我们需要检查外接硬盘的连接和状态,确保其正常工作。如果外接硬盘故障,我们需要及时修复或更换硬盘。

        综上所述,CPU低、Load高的问题通常是由于等待磁盘I/O完成的进程过多所导致的。我们可以通过分析CPU等待IO时间、查看磁盘IO情况、检查MySQL数据库的慢查询日志等方法来定位问题,并采取相应的优化措施来解决问题。

问题定位

        同样是通过top -Hp定位mysql中的线程,然后定位sql,最后结合业务,进行综合分析。

     SQL定位参考 :Java web应用性能分析之【CPU飙高分析之MySQL】-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-无-为-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值