前言
线上mysql服务器cpu1000%的分析
一、背景
早上接到mysql的报警,cpu 800%,紧接着发现线上服务的官网都打不开了,服务报警接踵而至。
二、分析
1.mysql cpu 过高分析
好文参考
文中要点:
单位时间 CPU 资源 = 查询执行的平均成本 x 单位时间执行的查询数量
显然,cpu使用率与【查询执行的平均成本】和【单位时间执行的查询数量】线性相关,而这两项就是我们常说的慢sql以及数据库QPS。
所以:一般而言,cpu使用率飙升可归纳为以下两点:
- 大量的慢sql占用了cpu资源,拖垮了数据库,这类的慢sql常常表现为:查询的数据量过大,全表扫描、锁抢占甚至死锁、复杂查询等
- QPS过高,本质上是数据库的承载的流量过大
2. mysql 内存过高对服务端的影响
1、现象
线上正常请求通过网关调用服务A,A调B,依次出现了rpc调用超时。
分析:
https://www.processon.com/diagraming/60aceda4e401fd373eb71d61
总结
rpc调用下游服务超时,依次查看下游服务超时的原因