我使用 Apache + Passenger 来托管一些 Rails 应用程序。当长时间没有请求时,某些东西似乎进入了睡眠模式。然后网站加载需要 10-20 秒。当长时间没有请求时,感觉有些东西必须醒来。
我该如何解决?我有足够的内存,所以如果什么东西睡着了就保持清醒应该没问题。;)
我使用 Apache + Passenger 来托管一些 Rails 应用程序。当长时间没有请求时,某些东西似乎进入了睡眠模式。然后网站加载需要 10-20 秒。当长时间没有请求时,感觉有些东西必须醒来。
我该如何解决?我有足够的内存,所以如果什么东西睡着了就保持清醒应该没问题。;)
看一下PassengerPoolIdleTime
Passenger的参数。它规定了应用程序实例在关闭以节省内存之前可以空闲的最大秒数。
默认值为 300,但您可以尝试设置更高的数字,看看是否有帮助。
此外,如果您在共享主机上并且无法更改该设置,您始终可以编写一个 cron 脚本以每 x 秒访问一次您的站点(其中 x 略小于PassengerPoolIdleTime),并更新您的分析包以忽略来自进行轮询的盒子的 IP 地址的请求。
乘客文档建议在仅运行少数 Rails 应用程序的非共享主机上将 PassengerPoolIdleTime 设置为 0。除非绝对必要,否则这应该可以防止它被卸载。
@x0ne,您可以在全局服务器配置中设置 PoolIdleTime(nginx 中的 pool_idle_time)。在我安装的 Nginx 中,它是 /opt/nginx/conf/nginx.conf。
这是涵盖 PoolIdleTime 的乘客文档部分:http ://www.modrails.com/documentation/Users%20guide.html#PassengerPoolIdleTime