1

我们正在使用 beanstalkd 运行从客户端接收作业,使用 php 并使用 pheanstalk 作为 php 代理。我们运行一个worker作为php系统守护进程并使用monit进行监控。

但它会一直以每天一次的频率重新启动。观察问题后,确认没有代码端错误。那么有哪些机会呢?

4

1 回答 1

0

PHP 并非设计为一个长时间运行的进程,因此偶尔重新启动脚本可能无论如何都是有用的 - 特别是如果干净退出在您的控制之下。

例如,您可以循环运行 50/100/1000 个作业,然后退出脚本以使其自动重新启动。将脚本调用包装在一个相当简单的 shell 脚本中可以检查返回值,然后立即重新启动,或者如果可能出现问题,可以稍微减慢速度。

脚本突然失败的原因是多种多样的。内存泄漏可能会迫使操作系统终止进程,错误可能会引发未捕获的异常或其他此类致命错误,或者脚本外部的某些东西可能会导致失败。

队列后台工作者的困难部分是处理可能导致脚本一直无法工作的(潜在)问题。详细日志可以在尝试追踪此类问题方面提供很大帮助。

于 2017-09-20T12:56:50.153 回答