防止 Rails 应用程序 Puma/IIS 上的 jRuby 在一定时间后入睡

Prevent jRuby on Rails app with Puma/IIS from falling asleep after a set amount of time

我们是 运行 Windows Server 2012 上的应用程序,使用 jRuby 1.7.20.1、puma 和 IIS 8+。

jRuby 的启动时间有点长,这很好,因为应用程序在收到请求后运行得非常快。问题是,如果应用程序长时间没有收到请求,jRuby 似乎睡着了,下一个请求必须重新经历整个启动过程。

我已经尝试将 .jrubyrc 添加到应用程序的根目录,以便 jRuby 将活动线程池最小值设置为 1(默认值为 0)。但这似乎没有任何作用。

我们正在考虑的最后一招解决方案是添加一个脚本,该脚本仅在一定时间间隔内发送一个小请求以防止它发生,但这显然很糟糕,我相信有一些方法可以配置 jRuby 以使其保持活动状态。

这实际上是需要在 IIS 中为我​​们的应用程序的 ApplicationPool 运行 更改的设置。

在 AppPool > 高级设置 > 空闲超时下

我们不得不将设置从终止更改为暂停。现在一切正常。