mysql数据库服务器CPU负载超过200%,mysqld进程导致的,如何解决

mysql数据库服务器CPU负载超过200%,mysqld进程导致的,如何解决,第1张

每次创建临时表,Created_tmp_tables增加,如果临时表大小超过tmp_table_size,则是在磁盘上创建临时表,Created_tmp_disk_tables也增加,Created_tmp_files表示MySQL服务创建的临时文件文件数,比较理想的配置是:

Created_tmp_disk_tables / Created_tmp_tables 100% <= 25%比如上面的服务器Created_tmp_disk_tables / Created_tmp_tables 100% =120%,应该相当好了

默认为16M,可调到64-256最佳,线程独占,太大可能内存不够I/O堵塞

如果动态页面要调大点,100M以上,如果网站大部分都是静态内容,一般64M足够。

mysql数据库cpu飙升800%,基本上就两种原因:

访问量大,大到你8核cpu都承受不了;

慢查询,数据库执行sql语句 *** 作(查询数据、修改数据)会产生大量的逻辑读,将读出来的数据维护到临时表中(内存),系统需要消耗较多的cpu来维持内存与磁盘数据的一致性。

大多数情况下都是开发人员对sql的把握质量不够,导致慢sql查询的产生,进而影响数据库的整体运行状况。

大量行锁冲突、行锁等待或后台任务也有可能会导致实例的CPU使用率过高,但这些情况出现的概率非常低。

当我们的数据库性能下降的厉害或者cpu飙升时候,可以进行如下 *** 作定位问题

查询mysql进程列表

showfullprocesslist;

获取到mysql当前使用的进程:

如果进程很多,说明请求量很大,需要区分是否正常业务流量,还是代码问题导致的。

查询慢查询日志

showvariableslike'%slow_query_log%';

找到慢查询日志文件/home/mysql/data3085/mysql/

slow_querylog

,即可找到慢查询日志信息,解决这些慢sql,你的cpu一定会降下来。

避免数据库cpu飙升

实际开发过程中,我们对数据库的使用一定要小心,不能等问题发生了再去排查问题解决问题,而是要预防问题的发生,并且在问题可能发生的情况下,提前介入,避免问题扩大化。平时开发过程中需要做好一些准备工作:

增加CPU使用率告警机制,比如使用率超过80%就短信告警;

所有的sql语句必须走索引,有DBA则由DBA统一调控,没有的话开发人员先执行explain看sql执行计划,必须走索引,属于强制规则;

新功能上线必须进行压测;

日常mysql运行监控,慢查日志查看,将隐患扼杀在摇篮之中。

以上就是一些mysql稳定运行的个人看法,大家还有什么好的建议,欢迎评论去交流讨论,批评指正~

以上就是关于mysql数据库服务器CPU负载超过200%,mysqld进程导致的,如何解决全部的内容,包括:mysql数据库服务器CPU负载超过200%,mysqld进程导致的,如何解决、mysql数据库cpu飙升800%,如何故障定位及优化、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9478063.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存