onWorkerError

最后更新于:2022-04-02 06:24:23

# onWorkerError [TOC] 当`Worker`/`Task`进程发生异常后会在`Manager`进程内回调此函数。 ~~~ void onWorkerError(swoole_server $serv, int $worker_id, int $worker_pid, int $exit_code, int $signal); ~~~ * `$worker_id`是异常进程的编号 * `$worker_pid`是异常进程的`ID` * `$exit_code`退出的状态码,范围是`0~255` * `$signal`进程退出的信号 此函数主要用于报警和监控,一旦发现`Worker`进程异常退出,那么很有可能是遇到了致命错误或者进程`CoreDump`。通过记录日志或者发送报警的信息来提示开发者进行相应的处理。 ## 常见错误 * `signal = 11`:说明`Worker`进程发生了`segment fault`段错误,可能触发了底层的`BUG`,请收集`core dump`信息和`valgrind`内存检测日志,向我们[反馈此问题](提交错误报告.md) * `exit_code = 255`:说明`Worker`进程发生了`Fatal Error`致命错误,请检查`PHP`的错误日志,找到存在问题的`PHP`代码,进行解决 * `signal = 9`:说明`Worker`被系统强行`Kill`,请检查是否有人为的`kill -9`操作,检查`dmesg`信息中是否存在`OOM`(`Out of memory`) * 如果存在`OOM`,分配了过大的内存。检查`Server`的`setting`配置,是否创建了非常大的`Swoole\Table`、`Swoole\Buffer`等内存模块
';