我使用 Oracle 的 Ampere 4 核 16GB 服务器来托管我的 php webapp。对于服务器,我选择了带有 PHP FPM 的 NGINX,在那里我使用一个简单的服务器端事件循环来建立与每个客户端的持久连接。但是当同时登录的用户很少时,服务器就会变得无响应。FPM 错误日志显示以下内容:
服务器已达到 pm.max_children 设置 (5),考虑提高它
注意:终止...
注意:退出,再见!
我的网站通常需要处理超过 200 个并发连接。因此我选择了 SSE,因为它被认为比短轮询更高效。
增加孩子数量可以解决这个问题吗?
这样做是否存在超出服务器资源的风险?
我是否应该停止使用 SSE 或者您有何建议?
非常感谢!我的 php 脚本的简化版本如下,
<?php
ob_implicit_flush(1);
ob_end_clean();
set_time_limit(0);
header('X-Accel-Buffering: no');
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$var = $_GET["something"];
//SQL qry to write a value to database
while (true) {
if (connection_aborted() == 1) {
break;
}
//another sql qry to check for changes in a value;
//if value has changed echo 'something';
sleep(100);
}
mysqli_close($con);
exit();
?>