2010-12-20 52 views
0

我有一个支持MySQL的Rails 3应用程序。我目前有数据库读取扩展问题,我正在独立解决它们。同时,由于某些数据库查询需要花费很多分钟才能运行,因此Passenger会产生多个Rack进程(达到指定限制),但所有进程都等待/挂起等待数据库。Nginx + Passenger + Rails 3 Rack processes hang

在某个时候,nginx拒绝接受更多的连接。

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

谢谢。

回答

0

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

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

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

+0

谢谢。我们有一个基于异步事件总线的系统来处理大多数请求。我们确实有一些SQL报告由于表的庞大(数百万条记录)而放缓。我正在努力将这些报告脱机。感谢您对Delayed :: Job的建议。 – 2010-12-22 04:41:48

相关问题