mysqlcpu跑不满开APP
Mysql数据库高CPU问题定位和优化 原创
2020-05-30 19:33:37
5点赞
yw804909465
码龄11年
关注
本课程的主旨及目标
?导致mysql数据库CPU高的常见原因
?常见定位问题的方法
?一般定位步骤
?数据库注意事项
导致mysql数据库CPU高的常见原因
占用CPU过高,可以做如下考虑:
1)一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条在执行的SQL,show processlist语句,查找负荷最重的SQL语句,优化该SQL,比如适当建立某字段的索引;
2)打开慢查询日志,将那些执行时间过长且占用资源过多的SQL拿来进行explain分析 , 导致CPU过高,多数是GroupBy、OrderBy排序问题所导致 , 然后慢慢进行优化改进 。比如优化insert语句、优化group by语句、优化order by语句、优化join语句等等;
3)考虑定时优化文件及索引;
4)定期分析表,使用optimize table;
5)优化数据库对象;
6)考虑是否是锁问题;
7)调整一些MySQL Server参数,比如key_buffer_size、table_cache、innodb_buffer_pool_size、innodb_log_file_size等等;
8)如果数据量过大,可以考虑使用MySQL集群或者搭建高可用环境 。
9)可能由于内存(泄露)导致数据库CPU高
10)在多用户高并发的情况下,任何系统都会hold不住的,所以,使用缓存是必须的 , 使用memcached或者redis缓存都可以;
11)看看tmp_table_size大小是否偏小 , 如果允许,适当的增大一点;
12)如果max_heap_table_size配置的过小 , 增大一点;
13)mysql的sql语句睡眠连接超时时间设置问题(wait_timeout)
14)使用show processlist查看mysql连接数 , 看看是否超过了mysql设置的连接数
一般定位步骤:
1】首先看看内存 free –m
目前看没有问题,1G的空闲
2】好了,用我们的必杀技,top看看资源消耗
可以看到服务器负载很高 , mysql CPU使用已达到接近400% , 基本可以看出mysql是可以进行优化的
3
Mysql数据库CPU占用过高原因排查 show processlistmysql服务器最近偶尔出现cpu百分百居高不下mysql怎么优化cpu的情况mysql怎么优化cpu,所以需要进行分析
兄弟命令show processlist;只列出前100条,如果想全列出请使用show full processlist;
先 简单说一下各列的含义和用途:
正在将表中修改的数据刷新到磁盘中 , 同时正在关闭已经用完的表 。这是一个很快的操作 , 如果不是这样的话 , 就应该确认磁盘空间是否已经满mysql怎么优化cpu了或者磁盘是否正处于重负中 。
Connect Out
复制从服务器正在连接主服务器 。
Copying to tmp table on disk
由于临时结果集大于 tmp_table_size , 正在将临时表从内存存储转为磁盘存储以此节省内存 。
Creating tmp table
正在创建临时表以存放部分查询结果 。
deleting from main table
服务器正在执行多表删除中的第一部分 , 刚删除第一个表 。
deleting from reference tables
服务器正在执行多表删除中的第二部分 , 正在删除其他表的记录 。
Flushing tables
正在执行 FLUSH TABLES,等待其他线程关闭数据表 。
Killed
发送mysql怎么优化cpu了一个kill请求给某线程 , 那么这个线程将会检查kill标志位,同时会放弃下一个kill请求 。MySQL会在每次的主循环中检查kill标志 位,不过有些情况下该线程可能会过一小段才能死掉 。如果该线程程被其他线程锁住了,那么kill请求会在锁释放时马上生效 。
推荐阅读
- u盘恢复微信图片过期怎么恢复,怎么从u盘恢复微信聊天记录
- Go语言的GC稳定吗,go语言chan
- linux的命令cd linux的命令窗口怎么进入
- 上海品牌营销策划价位如何,上海一界品牌营销策划有限公司
- 包含vb.net调试教程的词条
- mysqlSQL语句关键字转意,mysql 关键字做字段名
- 大礼包折扣卡代理平台,大礼包礼品卡
- net开发应用程序框架,net框架支持的开发语言包括
- Linux里head命令 linux headers