生产环境Web服务因为业务代码异常,出现了服务频繁重启,按照手册尝试了增加 stdoutFile 参数来记录以及增加try catch ,但是也没有记录到业务的异常。请教下, 还有什么办法可以定位到具体的问题?
图1是 web的 status 状态下截图
图2 使用 stdoutfile 记录的打印日志
看下workerman.log下的日志呢。
onMessage里最外层 try Catch试下。
$worker->onMessage = function($con, $data) { try { // 业务代码 } catch (\Throwable $e) { // 日志文件写绝对路径 file_put_contents('/tmp/exception.log'); } }
还有是不是业务设置了 set_exception_handler ,导致异常没有抛出来。
在项目中搜索了下。没有发现设置 set_exception_handler 在 onMessage 这里也有设置 不过现在catch 里面用的是 Excepiton 异常类。 您的意思是改成 他的父类 Throwable?
对
@1393: 把 catch 改成 Throwable 是可以的。目前观察服务没有在重启了。 也捕获到错误了哈~ 感谢~
看下workerman.log下的日志呢。
onMessage里最外层 try Catch试下。
还有是不是业务设置了 set_exception_handler ,导致异常没有抛出来。
在项目中搜索了下。没有发现设置 set_exception_handler 在 onMessage 这里也有设置 不过现在catch 里面用的是 Excepiton 异常类。 您的意思是改成 他的父类 Throwable?
对
@1393: 把 catch 改成 Throwable 是可以的。目前观察服务没有在重启了。 也捕获到错误了哈~ 感谢~