MySQL 服务器CPU负载超高,怎么分析

MySQL 服务器CPU负载超高,怎么分析,第1张

1、确定高负载的类型 htop,dstat命令看负载高是CPU还是IO

看具体是哪个用户哪个进程占用了相关系统资源,当前CPU、内存谁在使用

2、监控具体的sql语句,是insert update 还是 delete导致高负载

抓取mysql包分析,一般抓3306端口的数据 看出最繁忙的sql语句了

3、检查mysql日志

分析mysql慢日志,查看哪些sql语句最耗时

检查mysql配置参数是否有问题,引起大量的IO或者高CPU *** 作

innodb_flush_log_at_trx_commit 、innodb_buffer_pool_size 、key_buffer_size 等重要参数

4、检查硬件问题

mysql单库负载过高的处理方式如下:

先限制Innodb的并发处理.如果innodb_thread_concurrency=0可以先改成16或是64看机器压力,如果非常大,先改成16让机器的压力下来,然后慢慢增达,适应自已的业务。如:set global innodb_thread_concurrency=16。

对于连接数已经超过600或是更多的情况,可以考虑适当的限制一下连接数,让前端报一下错,也别让DB挂了,DB在了,总是可以用来加载一下数据,当数据加载到了nosql里了,慢慢的DB压力也会降下来的。

限制单用户连接数在500以下。如:set global max_user_connections=500。

解决思路

1、确定高负载的类型htop,dstat命令看负载高是CPU还是IO。

2、监控具体的sql语句,是insert update 还是delete导致高负载。

3、检查mysql日志。

4、检查硬件问题。

对于包括 mysql 在内的大多数数据库系统而言

性能问题的排查主要有以下方向:

1. 需求的不合理造成的性能问题

比方说,不需要实时更新的内容,被要求做成实时更新

2. 架构的不合理造成的性能问题

比方说,不适合数据库保存的数据,被存放在数据库中

或者,频繁访问但是很少变更的数据,没有做缓存

3. 查询语句的不合理造成的性能问题

比方说,重复执行相同的 SQL 会造成资源浪费

或者,大量复杂的 join 语句会导致查询效率低下

4. 数据库设计的不合理造成的性能问题

比方说,盲目追求三范式、四范式,有时候并没有必要

5. 硬件配置的不合理造成的性能问题

比方说,数据库服务器的 io 性能、CPU 、网络状况,都会影响性能

以上这些都是性能问题定位和调优的方向


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

原文地址: https://outofmemory.cn/zaji/7308779.html

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

发表评论

登录后才能评论

评论列表(0条)

保存