我会尝试对此进行非常具体的介绍-这并非易事,因此请尝试遵循.
我们有一个脚本可以在NGINX上与PHP一起运行-PHP-fpm FastCGI.
该脚本从试图访问它的用户那里获取信息,并实时运行某种算法.它不能是在后台运行的计划进程.
有时,页面加载甚至需要5到12秒的时间-没关系.
通常,我们从用户那里收集数据,并向第三方服务器发出多个传出请求,然后收集数据,对其进行分析并为用户返回响应.
问题是,
有许多用户正在运行此脚本,服务器变得非常繁忙-因为他们都是服务器上的活动连接,正在等待响应.
我们有2台服务器在1个负载均衡器下运行,这还不够.
有时,服务器一次最多具有1,500个活动连接.您可以想象这些服务器在该时间范围内如何响应.
我正在寻找解决方案.
我们可以向LB添加越来越多的服务器,但是这是唯一的解决方案,这听起来很荒谬.
我们运行了该脚本并对其进行了最大程度的优化,我可以向您保证-
对于该脚本的长时间运行,没有真正的解决方案,因为它依赖于第三方服务器,这些服务器需要一些时间才能对实时流量做出响应.
您有没有想过的解决方案,可以按原样保留此脚本-
但是如何以某种方式降低这些活动连接对整个服务器运行的影响?
有时,他们只是停下来回应.
非常感谢您的阅读!
>如果您确定对第三方服务器的所有请求的网络工作总和加上PHP脚本中响应的相应处理远低于硬件的限制.
>然后,您的PHP脚本可能效率低下地忙循环,直到所有响应都从第三方服务器返回为止
如果我正在处理这样的问题,我会做:
>停止使用自定义的外部C curl东西,因为PHP脚本正忙于等待它.
> Google并阅读有关PHP的curl-multi实现的非忙循环用法
希望这是有道理的.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。