2017-08-14 102 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年前...)

相關問題