我目前正在一个while(true)循环中执行一个longpolling脚本. PHP set_time_limit设置为0.有一个apache服务器,另一个Nginx服务器代理前一个.我通过这个longpolling脚本从MysqL表中提取文本.我想知道这个过程是否会妨碍服务器性能.如果是,那么如果有大量并发用户提取数据的程度如何?我应该把Nginx放在PHP-fpm上吗?
解决方法:
长轮询具有一些值得注意的服务器端属性
>在具有专用工作线程的服务器上,它将阻止工作人员
>在基于事件的服务器上,它不会阻止服务器中的任何内容
>在任何情况下,它都将使用一个或多个套接字,这也是一个有限的资源
> PHP解释器使用专用工作程序,因此每个并发轮询都会阻止PHP实例
>在许多安装中,PHP实例仅受可用RAM的限制
>如果轮询脚本正确完成,则上下文切换和cpu将大部分保持在雷达之下
通过此工作(并假设您使用的是生产级Apache MPM,而不是基于实验事件的MPM),将长轮询处理切换到Nginx将
>释放一些Apache工作者,而不会导致(基于事件的)Nginx中的阻塞
>可能会增加RAM使用率:如果使用apache-mod-PHP5运行,PHP解释器的静态RAM占用空间将仅在每个进程中发生一次
我的建议是首先进行一些分析和分析:有多少并发长轮询器同时运行? Apache是否会耗尽工作人员(而且你不能轻易增加计数)?您可以轻松地将长轮询移植到完全基于事件的解决方案(例如节点)吗?
如果有疑问,我倾向于将事情保持在一起,所以如果你的主要应用程序在Apache内部运行,那么移动长轮询器需要很好的论据来说服我 – 请理解,这最后一部分只是个人偏好.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。