【经验之谈】mysql占用CPU利用率过高的问题

前段时间Zabbix上出现自告警,报Escalators进程压力过大,增大Escalators参数,等改到80-90才不告警了,就觉得不对劲。

到设备上top一下发现mysql把95%上的CPU都吃掉了

上mysql去show processlist;

发现有大量sleep进程,show status like ‘Thread%‘;看到连接数只有138。

修改my.cnf文件,将max_connections降低到300,

发现没有改善,百度到可能是全局读写timeout时间没有优化的问题

修改mysql的my.cnf配置:

在[mysqld]添加

wait_timeout=120

interactive_timeout=120

重启mysql,CPU占用率果然下降了,目前占用15%左右。

同样的CPU占用过高,可能是由于其他原因引起的,下面分享下个人一些经验之谈:

*1、未恢复的告警过多,同样会导致这个问题,需要清空zabbix以下几个表格才能降低mysql的CPU占用率,这个办法治标不治本,需及时处理掉告警。

Alerts;problem;problemtag;events;eventrecovery;escalations。

2、将告警触发器由多重设置为单个,可有效降低mysql对CPU的占用,还有就是合理设置告警触发器,定时清理zabbix的告警表。

3、查看占用CPU高的SQL,top –H –p <mysql进程id>,然后使用mysql内部的表问题定位sql:

SELECTa.THREADOSID,b.user,b.host,b.db,b.command,b.time,b.state,http://b.info

FROMperformanceschema.threads a,informationschema.processlist b

WHEREb.id = a.processlistid;

从这里可以分析出哪条sql占用了较多的CPU,从而做下一步的优化。*

原文地址:https://blog.51cto.com/14483703/2427403

时间: 2024-10-13 12:12:04

【经验之谈】mysql占用CPU利用率过高的问题的相关文章

关于mysql占用CPU过高,问题解决

使用SHOW PROCESSLIST 查看 原因: 使用了 一个触发器 不断的去删除日志,保证每个用户的日志只有10条 去掉之后,CPU使用率从97% 降到了 17%. 利用show columns from 表名 查看 和 SQL 对比 查出 根本原因 : 删除条件里面 有一个 没有加索引,添加了索引后CPU在6%到40%波动,由于CPU单核,又加了很多触发器,所以去掉了这个 会频繁被触发的触发器. lower_case_table_names=1可以忽略表名大小写 SHOW VARIABLE

抓 TOP SQL 解决CPU利用率过高问题

--模拟CPU利用率过高的情况: SQL> select count(*) from  T_LTE_CARD_INFO ; COUNT(*) ---------- 3516598 SQL> select * from  T_LTE_CARD_INFO ; [[email protected] ~]$ top top - 11:10:20 up 19:31,  3 users,  load average: 0.17, 0.23, 0.14 Tasks: 187 total,   3 runni

记一次性能测试:mysql占用磁盘IO过高 的解决过程

在一次性能测试时,发现mysql的cpu使用率不高,但是磁盘io很高, 一开始考虑是mysql的慢日志比较多,但是查看后发现慢日志并不多,而且只有一台mysql. 进入实例,查看sync_binlog变量 mysql> show variables like '%sync_binlog%' -> ; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | sync_binlog | 1 |

一次mysql占用cpu高的处理过程

今天早上在正式服部署了新代码,过了一段时间,服务器的负载告警,cpu使用率告警,登录服务器查询,发现是mysql导致cpu的使用率过高,于是show processlist查询了一下,看到有很多线程处于sending data和lock的状态中,都是select某个数据库的某张表的操作. 于是将sending data的那些sql语句复制执行了一遍,发现执行它们的时间太长,然后又explain分析了一下. 有条select的条件中没有主键和索引,由于查询条件中那个字段具有唯一性,所以和开发商量将

解决Mysql占用cpu,内存高故障案例

故障: 晚上大概7点钟左右,收到播放中心投诉,说视频播放很慢,加载很久不出来.一开始,哥以为是tomcat服务又挂了.所以到tomcat服务器上查看下catalina.out输出日志.却没发现任务错误信息. 分析: 想了想,视频加载慢,会不会是数据库问题呢?果断上mysql数据库(从库)看下top如下:   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND    37258 mysql    20   0 17.

记一次java应用cpu利用率过高调试经历

1,现象 写的一个storm应用,主要是通过mysql的binlog来同步表到hbase.运行一段时间后发现,经常会出现cpu使用率飙升到200%以上,然后各种消息堆积报警等等出现各种问题 2,调研过程 cpu使用率很高,所以首先找到该进程,通过top命令,监控该进程的使用率,然后通过H,查看各个线程的cpu使用率情况,记下cpu使用率高的线程id,然后通过jstack pid,获取各个线程栈,听过top获取的线程id转化成16进制后,发现有问题的线程栈如下: 发现主要问题原来出现在HashMa

CPU利用率很高 800%爆了

快下班,问题来了 记一次快下班的记录 快下班了,好友发来了一张照片,如下: 中毒了,没问题,肯定是!!! 开始qq对话解决 **有监控吗,快速查看流量图,看看是否发包或者被发包?** 答曰:没有监控 **那查看一下交换机的接口流量呢?** 答曰:交换机是傻瓜二层的 **那看看防火墙的呢?** 查看流量并没有什么影响. 实在是解决太慢了,而对方的机器是内容,最后通过内容的某太机器,我远程朋友的qq桌面,远程服务器,10分钟后终于连接上了. 开始远程解决问题 1.find / -name cranb

centos内存大量被占用(kswap进程CPU利用率过高100%)的解决方案

问题描述:      通过free查看时,大概有一半以上的物理内存分配到cache里面,这样大的 cache是造成内存的耗尽缘由,与此同时使用top或ps查看进程时,kswapd进程负荷 很高,一般在90%以上,kswapd进程的作用是用于内存回收,确保系统空闲物理内 存的数量在一个合适的范围,它是按照一定比率来回收系统当前不活动的内存(默 认的比率是5%),也就是cache和buffer占用的.    在红旗4.0或4.1服务器版本(小于2.4.21-9.30的内核应该都存在这个问题)上安装数

MySQL 占用cpu 100%

目前的线上数据库,分为主从两个库,从库用来做比较耗时的数据统计分析. 今天top了一下从库服务器,发现mysqld 在很长一段时间都占用105% cpu,一开始以为是从库在处理主库的binlog. 两分钟后,发现不对,单次主从同步不会超过5秒的. 进入mysql命令行 show full processlist  \G; 一个查询线程正在执行.sql 中使用了 in 关键字.非常耗时,几乎不会停止. kill query process_id<查询线程的id> 杀死了这个进程. 果然,cpu