我的 Debian 服务器再次变得无响应并需要重新启动(无法进行 SSH 登录,不再将日志数据传输到另一台服务器的 MySQL 数据库,无法建立新的 FTP 连接,但 Wowza Mediaserver 继续运行并流式传输视频而没有问题)。
但是,我仍然通过现有的 SSH 连接登录,并能够输入 shell 命令。输入“ps auxf”时,我得到了以下输出(输出 1):
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 14994 0.0 0.0 71200 3520 ? S 00:01 0:00 \_/usr/sbin/CRON -f
root 15007 0.0 0.0 4328 748 ? Ss 00:01 0:00 | \_ /bin/sh -c /usr/sbin/iotop --accumulated --batch --delay=86100 --proc
root 15014 0.0 0.0 60208 17548 ? S 00:01 0:00 | \_ /usr/bin/python /usr/sbin/iotop --accumulated --batch --delay=861
root 18667 0.0 0.0 71092 3504 ? D 08:50 0:00 \_ /usr/sbin/CRON -f
root 18668 0.0 0.0 71092 3472 ? D 08:50 0:00 \_ /usr/sbin/CRON -f
root 18669 0.0 0.0 71092 3472 ? D 08:50 0:00 \_ /usr/sbin/CRON -f
root 18670 0.0 0.0 71092 3428 ? D 08:50 0:00 \_ /usr/sbin/CRON -f
root 18671 0.0 0.0 71200 3520 ? D 08:50 0:00 \_ /usr/sbin/CRON -f
还有几十个像最后几行这样的。此外,当 15 分钟后输入 ps 时,所有旧的 CRON -f 条目(例如 PID 18667,开始时间 08:50)仍然显示为正在运行的进程。
显然,有许多 cronjob 正在运行,但只有第一个 cronjob(存在于我的 crontab 中)有脚本内容 (/usr/sbin/iotop)。其他 cronjob 没有命令,处于非活动模式(状态“D”,而第一个处于状态“S”)。
我的服务器每分钟运行大约 5-6 个 PHP 脚本 cronjob,其中大多数在大约 15-40 秒内完成,并且不占用大量资源。它们的 ps aux 输出如下所示(输出 2):
root 19024 0.0 0.0 42224 2644 ? S 09:03 0:00 \_ /usr/sbin/CRON -f
root 19026 0.0 0.0 4328 712 ? Ss 09:03 0:00 | \_ /bin/sh -c /usr/bin/php -q /usr/local/script.php
因此,我暂时得出结论,第一个输出(OUTPUT 1)并未显示我的 PHP 脚本变得无响应、大量累积并导致问题。但是,OUTPUT 1 中的“ps auxf”输出显示每分钟大约有 5-6 个新的 CRON -f 条目,所有这些条目都在继续运行,这可能指的是 cronjob 尝试运行我的脚本,但无法运行它们然后卡住,从而产生了这个大量的 ps auxf 输出?
问题:
这几十行 CRON -f 是什么意思?它们指的是什么?
这个 ps auxf 输出可以解释为什么我的服务器没有响应吗?
答案1
对我来说,这归因于电子邮件系统出现故障,因此所有这些 cron 进程都在等待发送结果。我重新启动了 postfix,这种情况就不再发生了。