2017-08-14 81 views
2

在Ruby on Rails的,当我运行轨道服务器,第一个要求似乎是极其缓慢的,日志表明,缓慢来自视图渲染:为什么第一次Rails请求测试非常慢?

2017-08-14 10:24:12.707 [ 22139] [INFO ] Completed 200 OK in 18547ms (Views: 18501.6ms | ActiveRecord: 3.7ms) 

我想这是因为它需要连接到数据库。接下来的要求是当然的,快速(ER):

2017-08-14 11:01:54.937 [ 25662] [INFO ] Completed 200 OK in 765ms (Views: 714.0ms | ActiveRecord: 8.3ms) 

我认为这有什么做的缓存,它已经有一个数据库连接。我试着重新启动我的服务器,重新启动数据库,清除我的浏览器缓存和rake db:sessions:clear,但我无法得到第一个请求在开发中再次变慢。

这里是事情变得有趣的地方。 每一次都我运行黄瓜测试,第一个要求是始终慢得令人难以置信:

2017-08-14 11:19:52.879 [ 27729] [INFO ] Completed 200 OK in 38326ms (Views: 38306.8ms | ActiveRecord: 6.1ms) 

它甚至超过它在发展,原因不明。

重新启动Rails服务器和重新运行使测试的第一个请求如此缓慢的测试有什么不同?我可以采取哪些措施来解决此类问题?

(这是没有乐趣等待我们要运行我们的黄瓜测试之一,每次30秒)

+0

你使用弹簧吗? (或类似的东西?) –

+0

不是在这个时候,当我们没有意识到我们需要重新启动春季服务器以解决奇怪的问题时,它在过去造成了问题 – ardavis

+0

我不确定我们对于设置有很大的帮助......如果你只是单独运行一个无所事事的测试(比如true == true),它还是很慢? –

回答

1

很不幸,答案是非常孤立的我们的代码,但我想分享的答案,万一别人曾经遇到过这种情况。

我注意到,如果我运行rake tmp:cache:clear,浏览器中的第一个请求会再次真的很慢。我调查了这个命令,看到它清除了#{Rails.root}/tmp目录。

然后我发现这条线在黄瓜env.rb

Dir.foreach("#{Rails.root}/tmp") { |f| 
    FileUtils.rm_rf("#{Rails.root}/tmp/#{f}") 
} 

这似乎是罪魁祸首的整个时间。我不知道为什么添加(3年前...)

相关问题