我有一个 Nginx 和 Passenger 设置,但存在问题。
在相对较低的负载下,服务器似乎会备份并开始将如下结果搅入 error.log 中:
connect() to unix:/passenger_helper_server failed
(11: Resource temporarily unavailable) while connecting to upstream
我的乘客设置是:
passenger_min_instances 2;
passenger_pool_idle_time 1200;
passenger_max_pool_size 20;
我做了一些调查,发现 CPU 似乎已经饱和。内存使用情况似乎不错,passenger_memory_stats 显示最多使用了 700MB,但 CPU 接近 100%。
这足以导致这种类型的错误吗?
我应该减小池大小吗?我还应该查看其他配置设置吗?
任何帮助表示感谢
其他相关信息:
- Amazon EC2 小型实例
- Ubuntu 10.10
- Nginx(最新稳定版本)
- 乘客 (最新稳定版)
- Rails 3.0.4
答案1
free -m
当 CPU 接近 100% 并查看 EC2 小型实例的规格时,我感觉您的机器正在交换。启动服务器时查看输出,然后在进行负载测试时观察它。
摘自 Phusion Passenger 的文档
数字越大,内存使用量越大,但可以提高处理并发 HTTP 请求的能力。
您真的需要处理大量并发请求吗?如果是这样,您可能应该投资购买更大的 EC2 实例,然后调高您的passenger_max_pool_size
。我怀疑您需要的不仅仅是乘客用那台小机器提供的 6 个默认请求。