我把Rails应用程序放在Heroku上,现在我发现它的启动时间非常慢。我的意思是,当我第一次在Heroku上访问我的网站(使用浏览器)时,显示索引页面需要太多时间,但当我之后浏览网站时,请求需要正常时间。
那么,我如何看待这个"第一次"请求需要花费这么多时间呢?
这很正常,因为您没有为您的dyno付费,第一个dyno将在一定时间后闲置。
http://devcenter.heroku.com/articles/dynos
只有1个网络dyno的应用程序将在一段时间后闲置。网络dyno将关闭。当一个请求进入闲置的应用程序时,你的网络dyno将自动恢复,导致第一个请求延迟几秒钟。后续请求将正常执行。
拥有1个以上网络dyno的应用程序永远不会被闲置。工人们决不会无所事事。
如果你想看看发生了什么,你可以使用命令(从你的安装目录)
heroku日志
它将显示服务器的日志。
在我的暂存环境中,如果我现在查询(当我的dyno空闲时),我可以在日志中看到
2012-02-18T12:17:24+00:00 heroku[web.1]: Unidling
2012-02-18T12:17:24+00:00 heroku[web.1]: State changed from down to created
2012-02-18T12:17:24+00:00 heroku[web.1]: State changed from created to starting
[.....]
2012-02-18T12:17:42+00:00 heroku[router]: GET [...] dyno=web.1 queue=0 wait=0ms service=9ms status=200 bytes=0
=>我花了大约20秒的时间来完成我的第一个请求。