Nginx + Passenger + Rails 3 Rack进程挂起

时间:2010-12-20 19:06:40

标签: ruby-on-rails nginx passenger

我有一个MySQL支持的Rails 3应用程序。我目前在数据库读取方面存在扩展问题,我正在努力独立修复它们。

与此同时,由于某些数据库查询需要很长时间才能运行,因此Passenger会生成多个Rack进程(达到指定的限制),但所有这些进程都等待/挂起等待数据库。

在某一时刻,nginx拒绝接受更多连接。

有没有办法可以告诉Passenger超时其Rails委托调用并释放资源以便它可以侦听传入的请求?

感谢。

1 个答案:

答案 0 :(得分:0)

如果您在处理中的查询需要花费很多分钟,那么您做错了。

请求应尽可能快。几分钟是不可接受的。考虑将长时间运行的查询卸载到Delayed :: Job,这样它们就可以在后台运行而不是阻止其他请求。

另外,我不知道您正在运行什么查询,但如果它正在花费很多分钟,您可能需要考虑分析它们。