hyperf使用curl产生的超时问题

在Hyperf框架中,系统通过协程调用API同步第三方接口数据时遇到超时问题。排除了接口响应慢和协程使用不当的可能性,最终定位到可能是curl与swoole版本兼容性问题。尽管swoole版本符合要求,但原生PHP运行无超时,确定问题由curl+swoole组合引起。解决方案是用GuzzleHttp替换curl,成功解决了超时问题。
摘要由CSDN通过智能技术生成

业务场景

每天晚上系统需要同步第三方接口的数据,我们的系统要做的就是使用多个协程调用api接口获取数据(一批单号需要调用多个不同的接口),然后写入数据库。

出现的问题

在设置了超时时间为5分钟的情况下,大部分接口请求能正常响应,少量接口请求会超时。

问题定位

1.怀疑接口响应慢

使用jmeter以及golang分别测试,都不存在超时情况。golang设置的协程数量甚至比本场景中的大。

2.怀疑协程相关部分使用有问题,造成某些协程无法被唤醒

程序中用了channel和wait group。channel用于控制同时请求的api数量,wait group用于等待一批单号的所有接口请求完成。于是改成同步代码,并删除所有的数据库相关代码和所有的channel和wait group,结果依然会超时。

3.怀疑curl库在hyperf中有问题

查看文档,hyperf文档说swoole v4.5.4之前的版本需要添加

! defined
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kkyy3210

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值