我有个webman项目,收到客户端请求的时候会去调用三方接口查询,三方接口可能不稳定,会出现超时或者响应较慢,这个时候执行php start status 会发现所有的worker都是busy状态,项目基本处于挂掉的状态。
使用top命令查看Linux服务器cpu占用很低,也就是说这个问题 我无法通过升级服务器配置解决,感觉是curl请求是同步堵塞的,不同的worker发起http请求时,好像也是堵塞的吗?
请知道的大佬不吝赐教,万分感谢!
换个角度提问一下,比如我的webman项目要请求很多三方的接口,并且并发能力不错。可是只要有几个请求超时了,整个项目基本就瘫痪了,求解
busy是进程在处理业务,不一定是挂掉。
解决办法一
多开一些进程,例如cpu的8-16倍甚至更多,每个curl调用设置好超时时间,比如1-3秒。
解决方案二
使用workerman v5(目前是beta版本) + workerman/http-client 协程方式发起http请求
workerman/http-client参考文档 https://www.workerman.net/doc/workerman/components/workerman-http-client.html#%E5%8D%8F%E7%A8%8B%E7%94%A8%E6%B3%95
老大,现在支持协程了嘛,webman啥时候用上
上面方案二是webman http客户端协程用法
感谢老大亲自 我试试 这应该就是workerman 力压swoole的原因吧 给workerman和php点赞
这个协程是不是php得8.0以上吧
最低8.1
感谢老大