Nginx 和乘客 - 连接到上游时失败(11:资源暂时不可用)

Tob*_*ede 5 ubuntu tuning nginx ruby-on-rails phusion-passenger

我有一个被证明有问题的 Nginx 和乘客设置。

在相对较低的负载下,服务器似乎得到了备份并开始将这样的结果搅拌到 error.log 中:

connect() to unix:/passenger_helper_server failed 
(11: Resource temporarily unavailable) while connecting to upstream
Run Code Online (Sandbox Code Playgroud)

我的乘客设置是:

passenger_min_instances 2;
passenger_pool_idle_time 1200;
passenger_max_pool_size 20;
Run Code Online (Sandbox Code Playgroud)

我已经做了一些挖掘,看起来 CPU 被钉住了。内存使用情况似乎很好,passenger_memory_stats 显示最多使用了大约 700MB,但 CPU 接近 100%。

这足以导致此类错误吗?

我应该减少游泳池的大小吗?我应该查看其他配置设置吗?

任何帮助表示赞赏

其他相关信息:

  • Amazon EC2 小型实例
  • Ubuntu 10.10
  • Nginx(最新稳定版)
  • 乘客(最新稳定版)
  • 导轨 3.0.4

Chr*_*cke 1

随着 CPU 接近 100%,并查看 EC2 小型实例的规格,在我看来,您的机器正在交换。查看free -m启动服务器时的输出,然后在进行一些负载测试时观察它。

来自 Phusion Passenger 的文档

较大的数字会导致较高的内存使用量,但会提高处理并发 HTTP 请求的能力。

您真的需要处理大量并发请求吗?如果是这样,您可能应该投资一个更大的 EC2 实例,然后打开您的passenger_max_pool_size. 怀疑您需要的数量不会超过乘客为那台小机器提供的默认值 6。