我有一个MySQL支持的Rails 3应用程序。我目前在数据库读取方面存在扩展问题,我正在努力独立修复它们。
与此同时,由于某些数据库查询需要很长时间才能运行,因此Passenger会生成多个Rack进程(达到指定的限制),但所有这些进程都等待/挂起等待数据库。
在某一时刻,nginx拒绝接受更多连接。
有没有办法可以告诉Passenger超时其Rails委托调用并释放资源以便它可以侦听传入的请求?
感谢。
答案 0 :(得分:0)
如果您在处理中的查询需要花费很多分钟,那么您做错了。
请求应尽可能快。几分钟是不可接受的。考虑将长时间运行的查询卸载到Delayed :: Job,这样它们就可以在后台运行而不是阻止其他请求。
另外,我不知道您正在运行什么查询,但如果它正在花费很多分钟,您可能需要考虑分析它们。