实际上我正在使用supervisor来监视一个进程并在它由于某种原因停止时重新启动它。问题是,如果主管崩溃,进程将停止并受到监控。
所以我想安排一个 cronjob 来检查 supervisor 是否正在运行,并最终重新启动它。
我正在考虑的下一件事是摆脱主管并直接从 cronjob 检查我的进程。我读到有时 supervisor 使用过多的内存(虽然有待验证)。
让 supervisor VS cronjob 监控流程的优点是什么?
实际上我正在使用supervisor来监视一个进程并在它由于某种原因停止时重新启动它。问题是,如果主管崩溃,进程将停止并受到监控。
所以我想安排一个 cronjob 来检查 supervisor 是否正在运行,并最终重新启动它。
我正在考虑的下一件事是摆脱主管并直接从 cronjob 检查我的进程。我读到有时 supervisor 使用过多的内存(虽然有待验证)。
让 supervisor VS cronjob 监控流程的优点是什么?
Cron 定期调用 shell 脚本以确保服务正在运行实际上是一种相当不错的简单网络服务监控入门级方法。Cron 可以每分钟检查一次,因此如果停机时间小于 60 秒是可以接受的,那么这可能足以满足您的环境需求。它易于设置和使用。
另一方面,Supervisor 可以处理来自内核的有关服务进程的实时信号。这比简单的 cron 脚本响应要短得多。使用 Cron 来监控你的 supervisord 服务也不是很困难,并且会提供很好的第二道防线。
如果您需要确保服务正常运行并以非常短的增量响应,而不会因单点故障而导致任何服务中断,那么使用多服务器服务故障转移检测和更强大的监控解决方案可能会更好。所有这些都需要更复杂的网络安排以及更多的规划和维护投资。
在我所有的系统上,我都有一个 cron 文件夹(定期同步)。由 crontab 设置为每 5 分钟运行一次的单个脚本,其中包含我关于在哪个服务器上运行什么以及何时运行的规则(就像在我的个人服务器上一样,它每周查询一次我的 FB 以获得我和朋友的音乐喜欢或检查电影/ tv likes 并将它们与我的 netflix 队列进行比较,或者更专业地每 5 分钟检查一次公司上传文件夹,看看是否有数据需要分析)。
值得记住的是,根据进程或其他脚本命令,如果 cron 脚本未正确退出或花费比正常时间更长的时间,您可以多次运行它。因此,当您使用脚本化的 cron 路线时,请记住首先检查它是否已经在运行,并可能终止旧进程或等待它完成。
Cron 启动检查的频率不能超过一分钟一次。