我计划开发一个 Rails 应用程序,它有一个内容非常丰富的交互式页面,许多用户将连接到该页面。
开发进展顺利,在开发服务器上进行的短时间测试也顺利进行。
当我们开始对选定的人群进行 alpha 测试时,问题就出现了。服务器会突然停止。 Nginx 会因为队列已满而停止。我有一段时间不知所措,但环顾四周,得出的结论是 live actioncable 完全耗尽了我的内存。当用户多次重新加载订阅 actioncable 的页面时,这尤其糟糕,导致额外的进程变得活跃,完全停止服务器,只能通过重新启动 nginx 来治愈。
我目前运行一个 2 核 1GB 内存 SSD 运行 VPS 服务器进行 alpha 测试,可能最多有 20 个并发用户。我应该遇到这种负载的性能问题吗?或者应该调整代码或 redis,乘客解决这个问题?
我知道如果没有更多细节,很难说出任何明确的事情,但是可以根据这些信息进行粗略估计吗?
最佳答案
经过一些 gogoling 和测试 Nginx 设置后,将此指令添加到 passenger 的 nginx 设置中似乎显着改善了性能问题。
location /special_websocket_endpoint {
passenger_app_group_name foo_websocket;
passenger_force_max_concurrent_requests_per_process 0;
}
更多信息在这里
https://www.phusionpassenger.com/library/config/nginx/tuning_sse_and_websockets/
关于ruby-on-rails - 在生产中使用 ActionCable 时会出现性能问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39370085/