Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 对Rails应用程序的第一个请求非常慢_Ruby On Rails_Http_Mongrel - Fatal编程技术网

Ruby on rails 对Rails应用程序的第一个请求非常慢

Ruby on rails 对Rails应用程序的第一个请求非常慢,ruby-on-rails,http,mongrel,Ruby On Rails,Http,Mongrel,对我的Rails应用程序的第一个请求(工作会话)总是滞后。转向生产模式 没用 我使用mongrel,其他请求以可接受的速度处理 我如何使它更快 关于这可能与我们第一次在Websphere中启动应用程序时花了很长时间的原因相同 当安装(或重新启动)应用程序的新版本时,WAS必须进行大量初始工作来设置容器 我们使用的解决方法是修改安装脚本和启动脚本,以便它们在应用程序运行时自动浏览到应用程序(主页和选定的其他页面)。这样,第一次真正访问它是全速的 我不知道如何用Ruby实现这一点,甚至不知道这是否可

对我的Rails应用程序的第一个请求(工作会话)总是滞后。转向生产模式 没用

我使用mongrel,其他请求以可接受的速度处理

我如何使它更快


关于

这可能与我们第一次在Websphere中启动应用程序时花了很长时间的原因相同

当安装(或重新启动)应用程序的新版本时,WAS必须进行大量初始工作来设置容器

我们使用的解决方法是修改安装脚本和启动脚本,以便它们在应用程序运行时自动浏览到应用程序(主页和选定的其他页面)。这样,第一次真正访问它是全速的


我不知道如何用Ruby实现这一点,甚至不知道这是否可能。你必须弄清楚这一点。

如果你在处理第一个请求时发布日志内容,那么也许我们可以弄清楚是什么让它如此缓慢。例如,这是第一个用户访问站点时我的日志

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/]
我认为170请求/秒对我们的应用程序来说是不错的,但其他人可能会觉得很慢。从rails提供的统计数据可以看出,呈现响应所需的时间有一半——在本例中,生成登录屏幕的HTML。如果这个请求需要很长时间,我的第一个调用端口将是与登录屏幕关联的视图和帮助程序

如果您确实有一个系统,在第一次请求时需要很长时间来初始化自己,那么为什么不偷偷地编写自己的启动程序,首先运行rails,然后通过curl发送一个假请求。这样,您的用户就永远看不到问题所在


克里斯

我猜你是在用雪貂进行全文搜索吧?可能是雪貂连接需要一段时间才能初始化?当我查看您的日志时,似乎db和视图都需要正常的时间,但总时间仍然是10秒。所以我一定是另外一个人,这就是为什么我猜雪貂可能是个问题

这可能是因为您:

  • 需要并加载多个 插件和gems

  • 与外部设备建立连接 服务(然后是缓存)

  • 缓存您自己的页面,仅此而已 在第一个请求之后发生,除非 你可以“温暖”缓存


其中任何一个都会不可避免地增加第一个请求的响应时间。

也许您需要调整apache conf中的
passengerpolidletime
var。将其设置为0以永不停止rails进程。

这是可能的-您可以使用curl/wget使用一个简单的脚本从所有rails应用程序请求一个页面来实现同样的效果效果。谢谢你的提示。这是我的日志文件:有时候,它会持续超过1600毫秒来回答我的请求。我真的不知道…你用的是什么版本的rails?完成时间为10367ms(视图:1572,DB:450)| 200 OK[看起来回答第一个请求需要10秒。我想再次搜索同一个查询“stefan”要快得多?需要多长时间才能找到不同的记录?最后,搜索不存在的记录需要多长时间?