我正在运行带有 Passenger 3.0.11 和 Rails 应用程序的 nginx 1.0.4,我注意到对于我发出的每个请求,第一个请求大约需要 5 秒钟才能响应,如果我重新加载它,在第一个请求完成后,它很快,但是如果我等待一分钟,例如,新的第一个请求再次需要时间。
这是正常的吗?或者可能是我的配置有问题?
操作系统:MacOSX 10.7.3
答案1
等待第一位乘客请求的时间较长(在使用率低的站点)是正常的。
您可以预先启动乘客实例以避免首次请求等待。
例如:
在 nginx 配置的 http {} 部分
passenger_pre_start http://url_of_your_application/;
在服务器 {} 部分
passenger_min_instances = 1;
答案2
您可以考虑的另一个选项是每 5 分钟设置一个 cron 作业,该作业将获取站点 URL,从而使 Passenger 保持启动并准备就绪。我在生产中遇到了同样的问题,如果应用程序一段时间内没有使用,第一次访问时 Passenger 启动时会很慢(3-5 秒)。之后它就非常快了。
这是保持其活动的另一种方法(添加到您的 crontab:
*/5 * * * * wget http://yoursite.com > /dev/null 2>&1