阿里云的实时计算培训营已进行了大幅升级,拥有4天的技能突破和免费的天猫向导! >>>
MYSQL具有很高的CPU使用率,已经使用了很长时间的DB会遇到它。实际上,其他也有类似的问题,并且CPU也在增加。大多数DBA的第一项工作是查看是否存在大事务,大查询,慢查询等。实际上,我们有没有更好的方法来快速定位
在下图中,我们可以看到系统CPU处于90%的状态。如何分析MYSQL的CPU使用率很高的原因。跟着我。
我们使用pidstat检查当前MYSQL线程中的CPU使用率是否较高
从上图可以看到,CPU核心0和1的利用率高于其他核心,我们还可以看到TID,线程数,然后获得这些线程的ID并直接运行回到MYSQL。让我们看看这两个线程到底在做什么。
我们可以结合以上查询
1我们可以确定多核CPU上哪个核心CPU利用率更高
2通过查找哪个内核的CPU使用率,在MYSQL中找到有问题的连接。
此外,您还可以使用监视系统查看CPU的消耗位置。例如,您可以使用PMM查看CPU的消耗位置。如果是在用户级别,则可以确认用户的某些线程消耗了CPU。资源。然后,您可以使用上述方法找到当前正在占用大量CPU的线程
这是一集。我曾经听说过,如果遇到这种情况,添加CPU以暂时缓解CPULOAD的100%的情况,我在这里做了测试。
将上述压力很大的MYSQL的CPU数量从4 croe增加到8核。最终结果(至少在我的情况下),CPU负载在相同负载下基本相同。
此外,您还可以使用以下脚本查看瞬时QPS TPS,以查看系统是否过载。
mysqladmin -uroot -p'密码'--socket = / data / mysql / mysql.sock扩展状态-i1 | awk'BEGIN {local_switch = 0;打印“ QPS提交回滚TPS Threads_con Threads_run \ n-- -------------------------------------------------- -“}
$ 2〜/ Queries $ / {q = $ 4-lq; lq = $ 4;}
$ 2〜/ Com_commit $ / {c = $ 4-lc; lc = $ 4;}
$ 2〜/ Com_rollback $ / {r = $ 4-lr; lr = $ 4;}
$ 2〜/ Threads_connected $ / {tc = $ 4;}
$ 2〜/ Threads_running $ / {tr = $ 4;
if(local_switch == 0)
{local_switch = 1; count = 0}
其他{
if(count> 1 0)
{count = 0;打印“ ---------------------------------------- --------------- \ nQPS提交回滚TPS Threads_con Threads_run \ n -------------------------- -----------------------------“;}
其他{
count + = 1;
printf“%-6d%-8d%-7d%-8d%-10d%d \ n”,q,c,r,c + r,tc,tr;
}
}
}'
同时,它可以帮助查看当前的handler_read_rnd,handler_read_rnd_next和其他参数。如果增长迅速,则意味着当前查询具有全表扫描或无法有效使用索引。
剩余的工作可能与一些慢速查询或捕获的句子有关,以进行相关分析。
本文是从微信公众号AustinDatabases(AustinDatabases)中共享的。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-364039-1.html
储备黄金