1.背景:
在监控线上数据库的运行是否安全、正常的过程中,cpu 使用率是一个重要的指标,一旦cpu使用率飙升至90%+甚至达到100%,必然会对数据库的正常工作产生影响。
在排查数据库的cpu 飙升的问题前,我们先看下cpu 飙升的原因有哪些。
2.cpu使用率飙升的原因
首先直观的,cpu使用率过高可能和流量和慢查询有一定的关系
进一步查阅相关资料,得到公式:单位时间 CPU 资源 = 查询执行的平均成本 x 单位时间执行的查询数量
显然,cpu使用率与【查询执行的平均成本】和【单位时间执行的查询数量】线性相关,而这两项就是我们常说的慢sql以及数据库QPS。
所以:一般而言,cpu使用率飙升可归纳为以下两点:
- 大量的慢sql占用了cpu资源,拖垮了数据库,这类的慢sql常常表现为:查询的数据量过大,全表扫描、锁抢占甚至死锁、复杂查询等
- QPS过高,本质上是数据库的承载的流量过大
3.如何解决
3.1 定位问题
定位是否为qps原因:
例如以下案例:
首先,查看当前cpu曲线:
发现此时的cpu已经解决100%在运行,再查看此时的qps曲线,
<