Ste*_*fan 5 mongrel ruby-on-rails http
我的Rails应用程序的第一个请求(工作会话)总是滞后.切换到生产模式没有帮助.
我使用mongrel,其他请求以可接受的速度处理.
如何让它更快?
问候
如果您在处理第一个请求时发布日志内容,那么也许我们可以找出导致速度如此慢的原因。例如,这是我在第一个用户访问该网站时的日志
Booting Mongrel (use 'script/server webrick' to force WEBrick)
Rails 2.1.0 application starting on http://0.0.0.0:3000
Debugger enabled
Call with -d to detach
Ctrl-C to shutdown server
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
/usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/mime_type.rb:66: warning: already initialized constant CSV
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready. TERM => stop. USR2 => restart. INT => stop (no restart).
** Rails signals registered. HUP => reload (without restart). It might not work well.
** Mongrel 1.1.5 available at 0.0.0.0:3000
** Use CTRL-C to stop.
Processing SessionsController#new (for 127.0.0.1 at 2009-05-26 12:26:00) [GET]
Session ID: de2acf074759026e1ed6205724f547a9
Parameters: {"action"=>"new", "controller"=>"sessions"}
Rendering sessions/new
Completed in 0.00587 (170 reqs/sec) | Rendering: 0.00298 (50%) | DB: 0.00092 (15%) | 200 OK [http://localhost/]
Run Code Online (Sandbox Code Playgroud)
我认为 170 个请求/秒对于我们的应用程序来说很好,但其他人可能会发现这很慢。您可以从统计数据中看到,rails 提供的一半所需时间用于渲染响应 - 在本例中为登录屏幕生成 HTML。如果此请求需要很长时间,我的第一个调用端口将是与登录屏幕关联的视图和帮助程序。
如果您确实有一个系统在第一个请求时需要很长时间来初始化自身,那么为什么不偷偷摸摸地编写自己的启动程序,首先运行rails,然后通过curl发送一个假请求。这样您的用户就永远不会发现问题。
克里斯