我们有一个服务使用EventSource,大部分时间是正常的,偶尔会出现访问EventSource无响应,不输出任何数据,一直加载中。然后重启webman后,正常,日志没有输出任何错误信息。
事实上出问题的时候,连ok2都无法输出,就是一直加载中
这是哪里的问题呢?如果是调用第三方API时出现了问题,比如超时等,会不会影响整体服务呢
伪代码
if ($request->header('accept') === 'text/event-stream') {
逻辑代码块,调用第三方API
$connection->send(new ServerSentEvents(['event' => 'message', 'data' =>json_encode($result, JSON_UNESCAPED_UNICODE), 'id' => 1]));
}
$connection->send('ok2');
出现了一个webman的一个错误信息:
2023-06-28 17:51:51 pid:651602 worker[event-source:651738] exit with status 64000
猜测是第三方接口超时了。
在代码里记录下日志吧,看看运行到哪里出现了问题。
阻塞调用第三方接口超时会影响服务器,比如超时30秒不返回,这个进程30秒内就处理不了其它请求,就会出现你说的情况。
具体什么情况还是要记录日志定位。另外调用接口时设置下超时时间,时间短点比如2秒甚至1秒,这样不至于影响太长时间。