MySQL 服务器 CPU 使用率无缘无故飙升。知道原因吗?

MySQL 服务器 CPU 使用率无缘无故飙升。知道原因吗?

我有一台专用于 MySQL 的服务器。半夜时分,它的 CPU 使用率突然无缘无故地飙升。以下是图表:

在此处输入图片描述

如您所见,CPU 使用率在周五凌晨 3:30 突然上升。大部分增加来自系统,而不是用户。MySQL 服务器不再执行任何查询。CPU 负载突然爆发,原因不明。

周四下午 3:30 发生的第一次 CPU 负载跃升是由于将新代码推送到 Web 服务器。代码在周四晚上 8 点恢复到以前的版本,这导致 CPU 负载恢复正常。但是某物发生在周五凌晨 3:30。没有任何代码更改。我不知道那是什么。

你知道可能会发生什么吗?

编辑

以下是 /var/log/cron 周四 15:30 左右的部分:

3 月 3 日 15:25:01 db crond[8174]: (munin) CMD (/usr/bin/munin-cron) 3 月 3 日 15:25:01 db
crond[8175]: (root) CMD (/usr/local/cpanel/bin/dcpumon >/dev/null 2>&1)
3 月 3 日 15:26:01 db crond[8816]: (root) CMD (/usr/local/cpanel/whostmgr/bin/dnsqueue > /dev/null 2>&1) 3
月 3 日 15:27:01 db crond[8947]: (root) CMD (/usr/local/sbin/bfd -q)
3 月 3 日 15:30:01 db crond[9411]: (root) CMD (/etc/apf/apf --refresh >> /dev/null 2>&1 &)
3 月 3 日 15:30:01 db crond[9412]: (root) CMD (/usr/lib64/sa/sa1 1 1)
3 月 3 日 15:30:01 db crond[9413]: (root) CMD (/usr/local/lp/apps/autoupdate/lp-autoupdate.pl > /dev/null 2>&1)
3 月 3 日 15:30:01 db crond[9414]: (root) CMD (/usr/local/cpanel/bin/dcpumon >/dev/null 2>&1)
3 月 3 日 15:30:01 db crond[9415]: (root) CMD (/usr/local/sbin/bfd -q)
3 月 3 日 15:30:01 db crond[9417]: (munin) CMD (/usr/bin/munin-cron)
3 月 3 日 15:33:01 db crond[10502]: (root) CMD (/usr/local/sbin/bfd -q)
3 月 3 日 15:35:01 db crond[10895]: (munin) CMD (/usr/bin/munin-cron)
3 月 3 日 15:35:01 db crond[10896]: (root) CMD (/usr/bin/test -x /usr/local/cpanel/bin/tail-check && /usr/local/cpanel/bin/tail-check)
3 月 3 日 15:35:01 db crond[10897]: (root) CMD (/usr/local/cpanel/bin/dcpumon >/dev/null 2>&1)
3 月 3 日15:36:01 db crond[11494]: (root) CMD (/usr/local/sbin/bfd -q)
3 月 3 日 15:39:01 db crond[12028]: (root) CMD (/usr/local/sbin/bfd -q)
3 月 3 日 15:40:01 db crond[12451]: (root) CMD (/usr/lib64/sa/sa1 1 1)
3 月 3 日 15:40:01 db crond[12452]: (root) CMD (/etc/apf/apf --refresh >> /dev/null 2>&1 &)
3 月 3 日 15:40:01 db crond[12453]: (root) CMD (/usr/local/cpanel/bin/dcpumon >/dev/null 2>&1) 3
月3 月 3日 15:40:01 db crond[12456]: (munin) CMD (/usr/bin/munin-cron)
3 月 3 日 15:41:01 db crond[13384]: (root) CMD (/usr/local/cpanel/whostmgr/bin/dnsqueue > /dev/null 2>&1)
3 月 3 日 15:42:01 db crond[13561]: (root) CMD (/usr/local/sbin/bfd -q)
3 月 3 日 15:45:02 db crond[14266]: (root) CMD (/usr/local/sbin/bfd -q)
3 月 3 日 15:45:02 db crond[14270]: (root) CMD (/usr/local/lp/apps/autoupdate/lp-autoupdate.pl > /dev/null 2>&1)
3 月 3 日 15:45:02 db crond[14272]: (root) CMD (/usr/local/cpanel/bin/dcpumon >/dev/null 2>&1) 3 月
3 日 15:45:02 db crond[14273]: (munin) CMD (/usr/bin/munin-cron) 3
月 3 日 15:48:01 db crond[15314]: (root) CMD (/usr/local/sbin/bfd -q) 3
月 3 日 15:50:01 db crond[15835]: (munin) CMD (/usr/bin/munin-cron)
3 月 3 日 15:50:01 db crond[15836]: (root) CMD (/usr/lib64/sa/sa1 1 1)
3 月 3 日 15:50:01 db crond[15834]: (root) CMD (/usr/local/cpanel/bin/dcpumon >/dev/null 2>&1)
3 月 3 日 15:50:02 db crond[15843]:(根)CMD(/etc/apf/apf --refresh >> /dev/null 2>&1 &)
3 月 3 日 15:51:01 db crond[16734]: (root) CMD (/usr/local/sbin/bfd -q)
3 月 3 日 15:54:01 db crond[17251]: (root) CMD (/usr/local/sbin/bfd -q)

以下是周五 3:30 左右 /var/log/cron 的比例:

3 月 4 日 03:25:01 db crond[10399]: (munin) CMD (/usr/bin/munin-cron) 3 月 4 日 03:25:01 db
crond[10400]: (root) CMD (/usr/local/cpanel/bin/dcpumon >/dev/null 2>&1)
3 月 4 日 03:26:01 db crond[11056]: (root) CMD (/usr/local/cpanel/whostmgr/bin/dnsqueue > /dev/null 2>&1) 3
月 4 日 03:27:01 db crond[11258]: (mailman) CMD (/usr/local/cpanel/3rdparty/bin/python -S /usr/local/cpanel/3rdparty/mailman/cron/nightly_gzip) 3 月
4 日03:27:01 db crond[11259]: (root) CMD (/usr/local/sbin/bfd -q)
3 月 4 日 03:30:01 db crond[11506]: (root) CMD (/usr/local/sbin/bfd -q)
3 月 4 日 03:30:01 db crond[11507]: (root) CMD (/etc/apf/apf --refresh >> /dev/null 2>&1 &)
3 月 4 日 03:30:01 db crond[11508]: (root) CMD (/usr/lib64/sa/sa1 1 1) 3
月 4 日 03:30:01 db crond[11509]: (root) CMD (/usr/local/cpanel/bin/dcpumon >/dev/null 2>&1) 3 月
4 03:30:01 db crond[11510]: (munin) CMD (/usr/bin/munin-cron) 3 月 4
日 03:30:01 db crond[11515]: (root) CMD (/usr/local/lp/apps/autoupdate/lp-autoupdate.pl > /dev/null 2>&1) 3
月 4 日 03:33:01 db crond[12595]: (root) CMD (/usr/local/sbin/bfd -q)
3 月 4 日 03:35:01 db crond[12735]: (root) CMD (/usr/local/cpanel/bin/dcpumon >/dev/null 2>&1)
3 月 4 日 03:35:01 db crond[12736]: (munin) CMD (/usr/bin/munin-cron)
3 月 4 日 03:35:01 db crond[12737]:(root)CMD(/usr/bin/test -x /usr/local/cpanel/bin/tail-check && /usr/local/cpanel/bin/tail-check)
3 月 4 日 03:36:01 db crond[13355]:(root)CMD(/usr/local/sbin/bfd -q)
3 月 4 日 03:39:01 db crond[13822]:(root)CMD(/usr/local/sbin/bfd -q)
3 月 4 日 03:40:01 db crond[13975]:(root)CMD(/etc/apf/apf --refresh >> /dev/null 2>&1 &)
3 月 4 日 03:40:01 db crond[13976]: (root) CMD (/usr/local/cpanel/bin/dcpumon >/dev/null 2>&1)
3 月 4 日 03:40:01 db crond[13977]: (root) CMD (/usr/lib64/sa/sa1 1 1)
3 月 4 日 03:40:01 db crond[13978]: (munin) CMD (/usr/bin/munin-cron)
3 月 4 日 03:41:01 db crond[14796]: (root) CMD (/usr/local/cpanel/whostmgr/bin/dnsqueue > /dev/null 2>&1)
3 月 4 日 03:42:02 db crond[15068]: (root) CMD (/usr/local/sbin/bfd -q)
3 月 4 日03:45:01 db crond[15441]: (root) CMD (/usr/local/sbin/bfd -q)
3 月 4 日 03:45:01 db crond[15443]: (root) CMD (/usr/local/cpanel/bin/dcpumon >/dev/null 2>&1)
3 月 4 日 03:45:01 db crond[15442]: (munin) CMD (/usr/bin/munin-cron)
3 月 4 日 03:45:01 db crond[15444]: (root) CMD (/usr/local/lp/apps/autoupdate/lp-autoupdate.pl > /dev/null 2>&1)
3 月 4 日 03:48:01 db crond[16499]: (root) CMD (/usr/local/sbin/bfd -q)
3 月 4 日 03:50:01 db crond[16705]:(root)CMD(/usr/lib64/sa/sa1 1 1)
3 月 4 日 03:50:01 db crond[16706]:(根)CMD(/usr/local/cpanel/bin/dcpumon >/dev/null 2>&1)
3 月 4 日 03:50:01 db crond[16707]: (root) CMD (/etc/apf/apf --refresh >> /dev/null 2>&1 &)
3 月 4 日 03:50:01 db crond[16708]: (munin) CMD (/usr/bin/munin-cron)
3 月 4 日 03:51:01 db crond[17574]: (root) CMD (/usr/local/sbin/bfd -q)
3 月 4 日 03:54:01 db crond[18086]: (root) CMD (/usr/local/sbin/bfd -q)
3 月 4 日 03:55:01 db crond[18222]: (root) CMD (/usr/local/cpanel/bin/dcpumon >/dev/null 2>&1)

有任何想法吗?

如果这是 cron 作业,那么在 cron 作业完成后 CPU 负载不应该下降吗?CPU 负载一直居高不下,而且大部分都被 MySQL 使用。以下是 的输出top

top - 13:51:49 up 22 days, 21:35,  1 user,  load average: 17.10, 17.67, 17.67
Tasks: 432 total,   1 running, 431 sleeping,   0 stopped,   0 zombie
Cpu(s): 14.5%us, 49.2%sy,  0.0%ni, 36.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8177596k total,  6886860k used,  1290736k free,   545776k buffers
Swap:  4096564k total,        0k used,  4096564k free,  5264320k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                         
 1200 mysql     15   0 2258m 341m 4352 S 2036.1  4.3   1658:23 mysqld                                                                                        
 4269 root      15   0 13008 1364  808 R  0.7  0.0   0:00.39 top                                                                                             
 4636 root      10  -5     0    0    0 S  0.3  0.0  13:22.79 kjournald                                                                                       
    1 root      15   0 10352  704  588 S  0.0  0.0   0:07.19 init             

答案1

这个 MySQL 服务器是否管理面向公众的网站的数据库?

午夜 CPU 峰值有时可能与搜索引擎机器人索引大量页面有关。检查您的网络服务器上的访问日志/分析是否匹配。

答案2

如果没有更多信息,我根本不知道会发生什么。CPU 使用率在指定范围内明显飙升,但我不知道你的系统当时可能在做什么:系统日志将是我开始查看的第一个地方。再次出现的峰值确切地间隔十二个小时让我怀疑这是常规的 cron 任务,可能是备份或重新索引。如果您可以提供更多背景信息,我很乐意帮助您深入研究这个问题。

答案3

我首先想到的也是 cron 任务。

检查您的日志,看看其中是否有任何内容(syslog 或 cron)。此外,如果您使用的是默认的 cron 结构,请检查您的 cron.daily 文件夹中是否有最近由新包安装的新脚本。

编辑:还要检查您的备份脚本或日志,看看它们是否难以完成或访问系统上的文件。

答案4

如果 mysqld 仍然导致你的 CPU 问题,你可能需要检查SHOW PROCESSLIST;

我还会检查 mysql 日志,以了解问题开始时发生的情况。

相关内容