云数据库 TaurusDB-TaurusDB实例CPU升高定位思路:场景1 慢查询导致CPU升高
场景1 慢查询导致CPU升高
问题原因:大量慢SQL导致实例CPU升高,需要优化相应的慢SQL。
排查思路:
查看CPU使用率和慢日志个数统计监控指标。
- 如果慢日志个数很多,且与CPU曲线吻合,可以确定是慢SQL导致CPU升高。
- 如果慢日志个数不多,但与CPU使用率基本一致,进一步查看行读取速率指标是否与CPU曲线吻合。
如果吻合,说明是少量慢SQL访问大量行数据导致CPU升高:由于这些慢SQL查询执行效率低,为获得预期的结果需要访问大量的数据导致平均IO高,因此在QPS并不高的情况下(例如网站访问量不大),也会导致实例的CPU使用率偏高。
解决方案:
- 根据CPU使用率过高的时间点,查看对应时间段的慢日志信息。
- 重点关注扫描行数、返回结果行数超过百万级别的慢查询,以及锁等待时间长的慢查询。
- 慢查询用户可自行分析,或使用数据管理服务(DAS)的SQL诊断工具对慢查询语句进行诊断。
- 使用数据库代理+只读节点架构,实现读写分离。只读节点专门负责查询,减轻主库压力,提升数据库吞吐能力,详见读写分离简介。
- 通过分析数据库执行中的会话来定位执行效率低的SQL。
- 连接数据库。
- 执行show full processlist;。
- 分析执行时间长、运行状态为Sending data、Copying to tmp table、Copying to tmp table on disk、Sorting result、Using filesort的会话,均可能存在性能问题,通过会话来分析其正在执行的SQL。