Php 守护进程经常崩溃
Php daemon process crashing frequently
我们正在使用 beantalkd 运行 从客户端接收作业,使用 php 并使用 pheanstalk 作为 php 代理。我们 运行 将 worker 作为 php 系统守护进程并使用 monit 继续监控。
但它总是以一天一次的频率重新启动。观察问题后确认没有代码端错误。那么机会有多大?
PHP 并非设计为一个漫长的 运行ning 过程,因此无论如何偶尔重新启动脚本可能是一件有用的事情 - 特别是如果干净的出口在您的控制之下。
例如,您可以 运行 循环执行 50/100/1000 个作业,然后退出脚本使其自动重新启动。包装 call to the script in a fairly simple shell script 可以检查 return 值,然后立即重新启动,或者如果可能存在问题则稍微放慢速度。
脚本突然失败的原因有很多种。内存泄漏可能会强制 OS 终止进程,错误可能会引发未捕获的异常或其他此类致命错误,或者脚本外部的某些内容可能会导致失败。
队列后台工作人员的困难部分是处理可能阻止脚本一直工作的(潜在)问题。详细的日志可以在尝试追踪此类问题时提供很大帮助。
我们正在使用 beantalkd 运行 从客户端接收作业,使用 php 并使用 pheanstalk 作为 php 代理。我们 运行 将 worker 作为 php 系统守护进程并使用 monit 继续监控。
但它总是以一天一次的频率重新启动。观察问题后确认没有代码端错误。那么机会有多大?
PHP 并非设计为一个漫长的 运行ning 过程,因此无论如何偶尔重新启动脚本可能是一件有用的事情 - 特别是如果干净的出口在您的控制之下。
例如,您可以 运行 循环执行 50/100/1000 个作业,然后退出脚本使其自动重新启动。包装 call to the script in a fairly simple shell script 可以检查 return 值,然后立即重新启动,或者如果可能存在问题则稍微放慢速度。
脚本突然失败的原因有很多种。内存泄漏可能会强制 OS 终止进程,错误可能会引发未捕获的异常或其他此类致命错误,或者脚本外部的某些内容可能会导致失败。
队列后台工作人员的困难部分是处理可能阻止脚本一直工作的(潜在)问题。详细的日志可以在尝试追踪此类问题时提供很大帮助。