我在us-east1-b区域中有一台计算机引擎服务器。 n1-highmem-4(4个vCPU,26 GB内存)和50 GB SSD,一切都在监视图中显示正常。
我们正在将此服务器用作基于Rails的RESTful API。
问题是,当我们向服务器发送请求时,需要很长时间才能收到响应。
,这是邮递员收到的回复: 如您所见,X-Runtime是预期的0.036319,但我们在50374毫秒内收到了响应,这意味着服务器响应后将近1分钟!
答案 0 :(得分:0)
我希望这个答案可以帮助有同样问题的人。 乘客高度优化的负载均衡器假定Ruby应用程序可以处理1个(或线程限制的数量)并发连接。通常是这种情况,并导致最佳的负载平衡。但是处理SSE / Websocket的端点可以处理更多的并发连接,因此这种假设会导致性能下降。
您可以使用“每个进程配置最大强制并发请求数”选项来覆盖此选项。下面的示例显示如何将/ special_websocket_endpoint的并发设置为无限制:
server {
listen 80;
server_name www.example.com;
root /webapps/my_app/public;
passenger_enabled on;
# Use default concurrency for the app. But for the endpoint
# /special_websocket_endpoint, force a different concurrency.
location /special_websocket_endpoint {
passenger_app_group_name foo_websocket;
passenger_force_max_concurrent_requests_per_process 0;
}
}
在旅客5.0.21及以下版本中,以上选项尚不可用。在这些版本中,有针对Ruby应用程序的解决方法。在config.ru中输入以下代码以设置并发(在整个应用程序中)。