我目前在结合一个简单的 Rails 4.0.0 应用程序时遇到了乘客(4.0.18)的问题。问题是,在启动 apache 之后,第一个请求非常慢(通常是 30.x 秒)。以下请求非常快,但如果应用程序空闲 20 秒以上,同样的情况会再次发生。
现在,这个问题已经在这里讨论过好几次了,当然我已经调整了 apache 配置:
PassengerSpawnMethod smart
PassengerPoolIdleTime 1000
RailsAppSpawnerIdleTime 0
PassengerMaxRequests 1000
PassengerMaxPreloaderIdleTime 0
但这根本没有帮助。如果我检查乘客状态,它会告诉我:
Version : 4.0.18
Date : 2014-01-31 13:06:59 +0100
Instance: 20601
----------- General information -----------
Max pool size : 6
Processes : 1
Requests in top-level queue : 0
有趣的是,当我在执行请求时对乘客状态进行“监视”时,这里并没有真正改变。(尤其是请求行)。
我已经摆弄了 tcpdump,所有请求都及时到达,所以没有可见的网络延迟。我还启用了 apache 扩展日志记录(增加了请求时间)——这很有趣,假设一个正常请求大约需要 200 毫秒,那么其中一个慢速请求恰好需要 30.2 秒。
知道这会导致什么吗?
Apache 是 2.2.15。(redhat 版本,带有反向移植的安全补丁...:))
提前致谢, 比约恩