如何确定哪种资源已耗尽

如何确定哪种资源已耗尽

在负载非常高的服务器上,我的许多日常 cron 任务都停止工作了。我运行的 postfix 服务器只在本地进行交付,因此我可以使用 查看 cron 任务的输出mutt

我查看了cron日志,看到了以下内容:

Feb 23 22:44:16 server10 cron[2276]: /usr/sbin/sendmail: Resource temporarily unavailable

我看到的是/var/log/mail这样的:

Feb 23 22:05:15 server10 postfix/sendmail[1113]: warning: fork: Resource temporarily unavailable

systemctl status cron表示systemctl status postfix两个进程都在运行。

所以我添加了这个每分钟运行一次的 cronjob

#!/bin/bash

date
sleep 1
date

date >> ~/cron.log

echo "bye"

文件出现花了将近 5 分钟的时间~/cron.log。然后我可以看到并不是每分钟都在执行,这解释了为什么我的每日 cron 作业没有被执行。

$ cat cron.log
Tue Feb 23 22:52:02 CET 2021
Tue Feb 23 22:53:02 CET 2021
Tue Feb 23 22:56:02 CET 2021
Tue Feb 23 22:58:02 CET 2021
Tue Feb 23 23:01:02 CET 2021
Tue Feb 23 23:02:02 CET 2021
Tue Feb 23 23:07:02 CET 2021
Tue Feb 23 23:08:02 CET 2021
Tue Feb 23 23:10:03 CET 2021
Tue Feb 23 23:11:02 CET 2021
Tue Feb 23 23:13:02 CET 2021

因此,当我运行tail -fon时/var/log/messages,我看到了以下内容:

$ tail -f messages | grep cron
Feb 23 23:17:03 server10 cron[2276]: /usr/sbin/sendmail: Resource temporarily unavailable
Feb 23 23:18:01 server10 cron[2276]: /usr/sbin/sendmail: Resource temporarily unavailable
Feb 23 23:18:01 server10 cron[2276]: /usr/sbin/sendmail: Resource temporarily unavailable
Feb 23 23:18:01 server10 cron[2276]: /usr/sbin/sendmail: Resource temporarily unavailable
Feb 23 23:19:16 server10 cron[2276]: /usr/sbin/sendmail: Resource temporarily unavailable
Feb 23 23:19:16 server10 cron[2276]: /usr/sbin/sendmail: Resource temporarily unavailable
Feb 23 23:20:02 server10 cron[2276]: /usr/sbin/sendmail: Resource temporarily unavailable

所以我在谷歌上搜索了一下,找到了 Cron 作业不再起作用有一个非常类似的问题,但这对我没有帮助。我不知道哪个资源达到了极限。sysctl kernel.pid_max显示 32768,对于系统来说这似乎有点低x86_64,所以我将值提高到 4194303,但这也无济于事,资源暂时不可用消息不断出现。

那么我如何确定哪种资源已达到极限?遗憾的是日志文件没有告诉我那么多信息。

相关内容