我使用幾個Rails應用程序,一些使用Rails 3.2/Ruby 2.0,一些使用Rails 2.3/Ruby 1.8.7。改進緩慢的Rails啓動時間(Rails控制檯,Rails服務器)
他們的共同之處在於,隨着他們的成長和增加更多的依賴/寶石,他們需要的時間越來越長。開發,測試,生產,控制檯,沒關係;有些需要60+秒。
什麼是首選的方式,什麼是導致加載時間如此緩慢的配置文件,以及兩個,改善加載時間?
我使用幾個Rails應用程序,一些使用Rails 3.2/Ruby 2.0,一些使用Rails 2.3/Ruby 1.8.7。改進緩慢的Rails啓動時間(Rails控制檯,Rails服務器)
他們的共同之處在於,隨着他們的成長和增加更多的依賴/寶石,他們需要的時間越來越長。開發,測試,生產,控制檯,沒關係;有些需要60+秒。
什麼是首選的方式,什麼是導致加載時間如此緩慢的配置文件,以及兩個,改善加載時間?
瑞安關於加快測試,操作檯,耙任務的好嘖嘖:http://railscasts.com/episodes/412-fast-rails-commands?view=asciicast
我已經檢查每一個方法那裏,發現「spring」是最好的。只要運行的任務,如
$ spring rspec
的時間爲你的春天第一次運行會像以前一樣,但第二個和以後會快很多。
另外,從我的經驗來看,有時候您需要停止彈簧服務器並在發生奇怪錯誤時重新啓動,但機會很少。
紅寶石2級的應用程序,嘗試宙斯 - https://github.com/burke/zeus
1.8應用程序似乎引導除1.9快得多,叉勺可能幫助? http://railscasts.com/episodes/285-spork
這些實際上都不會有助於啓動時間,它們只是在初次啓動後對應用程序進行檢查點操作,以便您可以從加熱狀態中分出叉。雖然有用,但它們沒有直接解決OP的問題。 –
有幾件事情會導致這種情況。
bundle clean
。如果你使用RVM,你可以嘗試創建一個新的gemset。就分析而言,您可以使用ruby-prof來分析啓動應用程序時發生的情況。您可以將config/environment.rb
包裝在ruby-prof模塊中,然後使用它來生成類似rails r ''
之類的啓動週期的配置文件報告。這可以幫助您追蹤您將大部分時間花在引導中的位置。您也可以分析個別部分,如boot.rb
中的打包程序設置或environment.rb
中的#initialize!
調用。
你可能不會考慮的東西是DNS超時。如果您的應用在啓動時執行了DNS查找(無法解析),則這些操作可能會阻止$ timeout秒(在某些情況下可能高達30)!您也可以審覈這些應用。
@professormeowingtons垃圾收集器和虛擬機 –
謝謝,春天太棒了!它確實打破了我的許多rspec /水豚測試。 – professormeowingtons
不幸的是,'春天',雖然快速和真棒,絕對討厭rspec /水豚。 – professormeowingtons
@professormeowingtons,你爲什麼這麼說?我一直在使用spring很久,並且每天都運行rspec並且感覺很好。 –