我有一台专用于 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 日志,以了解问题开始时发生的情况。