CURL耗尽PHP-fpm的worker如何解决?

由于CURL的阻塞特性会一定的负载情况下curl就会耗尽php-fpm的worker。 目前遇到的问题就是在php端调用API网关来处理页面上所需展示…
关注者
10
被浏览
2,772
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

题主的阐述可能不太严谨,并非是curl耗尽fpm连接。php的执行过程都是同步阻塞的,除了curl,其他处理过程冗长的业务也会长时间占着fpm连接。


所以题主的问题应该改为: 有些接口业务处理时间很长,会长时间占满fpm连接,导致没有空闲的fpm资源为用户服务。应该怎么办?


两种情况

1.可以通过优化,缩短时间的场景

检查耗时的点卡在哪里,排查配置/逻辑不当导致的耗时。

使用异步扩展,将能够并行处理的业务同时执行(例如curl某api多次的场景)

2.无法缩短,或者优化后依然耗时的场景

只能走消息队列异步去处理了。前端通过websocket或者轮询取得结果。