我使用 Zoo 在 IIS 下运行 Redmine。安装是使用 Web 平台安装程序完成的,默认配置没有被触及。
但是,使用该应用程序时,第一个请求需要很长时间才能完成(有时超过一分钟)。在此期间,ruby.exe 会导致一些 CPU 负载(约 15%)。
根据日志文件,主要是视图需要花那么长时间才能呈现:
Started GET "/redmine/login" for IP at 2012-09-04 09:54:08 +0200
Processing by AccountController#login as HTML
Rendered account/login.html.erb within layouts/base (42150.5ms)
Completed 200 OK in 43508ms (Views: 43008.5ms | ActiveRecord: 0.0ms)
Rendered account/login.html.erb within layouts/base (42435.1ms)
Completed 200 OK in 44100ms (Views: 43523.3ms | ActiveRecord: 0.0ms)
在最初的延迟之后,进一步的请求时间是完全可以接受的。
关于如何加快预热时间有什么想法吗?
答案1
我在共享托管服务器上安装的 Redmine 也遇到了类似的问题。我的情况是 Linux/Apache 环境,但我遇到了完全相同的症状。
由于它是共享主机,我无法控制整个环境。我花了一点时间尝试修复它,然后采取了一个简单的解决方法。我创建了一个每 15 分钟一次的任务来检索 Redmine 主页:
*/15 * * * * /usr/bin/curl http://redmineserver.example.com/ --stderr - > /dev/null
这对我来说很有效,显然 15 分钟的频率足以让系统保持所有内容加载并准备好运行。
答案2
看这个问题在 ServerFault 上。您应该能够PassengerPoolIdleTime
在配置文件中的某个地方进行设置,但是当使用 IIS 作为 Web 服务器时,我不确定在哪里进行设置。
好的..试试此主题相反。我不知道您对服务器有多少控制权,但希望这能为您指明正确的方向。
如果论坛不可用,这是最相关的部分:
对于 IdleTimeout 和重启期间的长时间延迟,我只是认为该行为可能是由 IIS 应用程序池的空闲关闭功能引起的,而不是 fcgiext.ini 中的 IdleTimeout。请打开站点的应用程序池属性。检查其默认的空闲关闭时间。默认值为 20 分钟,这意味着:如果每 20 分钟没有请求进入,IIS 将关闭此池,此后任何新的传入请求肯定会遇到“延迟”,等待 IIS 重新启动应用程序池的工作进程并重新加载所有内容。