gpt4 book ai didi

apache - Longpolling对服务器的影响

转载 作者:可可西里 更新时间:2023-10-31 23:40:45 28 4
gpt4 key购买 nike

我目前正在 while(true) 循环中执行一个长轮询脚本。 PHP set_time_limit 设置为 0。有一个 apache 服务器和另一个 nginx 服务器代理到前一个。我正在通过这个长轮询脚本从 MySQL 表中提取文本。我想知道这个过程是否会影响服务器性能。如果是,那么大量并发用户拉取数据的程度如何?我应该把 nginx 放在 php-fpm 上吗?

最佳答案

长轮询有一些值得注意的服务器端属性

  • 在有专用worker的服务器上,它会阻塞一个worker
  • 在基于事件的服务器上,它不会阻塞服务器中的任何内容
  • 无论如何它都会使用一个或多个套接字,这也是一种有限的资源
  • PHP 解释器使用专门的 worker,因此每个并发轮询都会阻塞一个 PHP 实例
  • 在许多安装中,PHP 实例仅受可用 RAM 的限制
  • 如果轮询脚本正确完成上下文切换,CPU 将大部分保持在雷达之下

以此为基础(假设您使用生产级 Apache MPM,而不是实验性的基于事件的 MPM),将长轮询处理切换到 Nginx 将

  • 释放一些 Apache worker,而不会导致(基于事件的)Nginx 阻塞
  • 可能会增加 RAM 使用量:如果使用 apache-mod-php5 运行,则 PHP 解释器的静态 RAM 占用空间只会在每个进程中出现一次

我的建议是首先进行一些分析和分析:有多少并发长轮询真正并发运行? Apache 是否用完了工作人员(并且您不能轻易增加工作人员数量)?您能否轻松地将长轮询移植到完全基于事件的解决方案(例如节点)?

如果有疑问,我倾向于把事情放在一起,所以如果你的主应用程序在 Apache 中运行,将长轮询移出需要好的论据来说服我 - 请理解,这最后一部分只是个人偏好。

关于apache - Longpolling对服务器的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22206978/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com