我有一个由Phusion Passenger Standalone运行的Rails应用程序(其中内置nginx)。我已经在nginx和我的Rails应用程序中启用了访问日志。我见过来自nginx的访问日志报告请求的请求,例如10秒,而Rails的访问日志报告只需不到一秒钟。
在nginx访问日志中,除其他外,我还包括以下变量:$ request_time,$connection_requests
,$connections_active
,$connections_reading
,$connections_writing
和{{ 1}}。据我所知,$connections_waiting
是当前在nginx中的请求数,无论它们当前是由nginx还是Rails应用程序处理。如果$connections_active
的值大于乘客的数量,则在nginx中有一个队列。问题是这个值永远不会超过工人的数量。我不明白为什么nginx不会将请求转发给可用的工作人员。
这个问题很难一致地重现,似乎没有出现这种情况的模式。它大部分时间都出现在最常用的请求路径上,但我认为这是因为它们是最常用的。
有没有办法从Passenger / nginx获取有关请求被卡住/延迟的原因?或者任何其他想法如何解决这个问题。
如果有更多信息需要,请告诉我。