2013-01-14 64 views
2

我有興趣瞭解在60秒內發生什麼事情的一些步驟,以防止啓動和常見原因。如何在Heroku上調試「錯誤R10(引導超時)」問題

這是日誌文件看起來如何(講述發生了什麼actualy事情沒有)

2013-01-14T10:34:17+00:00 app[web.1]: => Booting Thin 
2013-01-14T10:34:17+00:00 app[web.1]: => Call with -d to detach 
2013-01-14T10:34:17+00:00 app[web.1]: => Rails 3.2.2 application starting in production on http://0.0.0.0:52216 
2013-01-14T10:34:17+00:00 app[web.1]: => Ctrl-C to shutdown server 
2013-01-14T10:34:23+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch 
2013-01-14T10:34:23+00:00 heroku[web.1]: Stopping process with SIGKILL 
2013-01-14T10:34:24+00:00 heroku[web.1]: Process exited with status 137 
2013-01-14T10:34:24+00:00 heroku[web.1]: State changed from starting to crashed 

我想,如果有至少一個堆棧跟蹤顯示,當過程被打死,那將是非常很有幫助。

你做什麼/檢查什麼時候發生這種情況?

PS:我不是在尋找我的案例的答案,而是一般的步驟,每個人都可以從中受益。

+0

注意:這篇文章中的方法也很有用:http://stackoverflow.com/questions/11544460/how-to-get-a-backtrace-from-a-systemstackerror-stack-level-too-深 – hakunin

回答

9

我通常搞清楚什麼寶石花了很長時間與下面的代碼(初始化/ debug_require.rb)開始:

if ENV['DEBUG_REQUIRE'] 
    require 'benchmark' 

    def require(file) 
    @@first ||= Time.now 
    rc = false 
    ts = Benchmark.measure do 
     rc = super 
    end 
    if ENV['DEBUG_REQUIRE'].to_f < ts.total 
     total = ts.format("%t require #{file}") 
     from_start = (Time.now - @@first).to_i 
     $stdout.puts "#{total} (#{from_start} second(s) from start)" 
    end 
    rc 
    end 
end 

一下添加到配置/的boot.rb:

require File.expand_path('../initializers/debug_require', __FILE__) 

並設置heroku config:add DEBUG_REQUIRE=1

觀察緩慢需要的日誌輸出。

+0

這非常簡單和有益的,謝謝! – hakunin

+0

這應該幾乎可以肯定在Heroku的ruby文檔中。不是嗎?! – imderek

+1

在調用@@ first的Rails 4時出現以下錯誤:'/app/config/initializers/debug_require.rb:7:warning:從頂級類訪問類變量' – migu

0

也許你可以嘗試在本地運行它來檢查發生了什麼?你可以做使用可用的代碼對這個職位做到這一點: http://ablogaboutcode.com/2012/05/03/benchmark-your-bundle/

,因爲它是Heroku App Boot Timeout討論解釋,你應該在你需要的寶石的數量看,也許第一次調整。如果您的啓動負載需要超過60秒,您還可以查看此寶石: https://github.com/dblock/heroku-forward

+0

感謝您的提示,該應用程序在當地運行良好,一旦我重新開發了在Gemfile中幾乎沒有新的寶石的分支,問題就消失了。同樣的應用程序運行在其他服務器上沒有問題..所以所有的邏輯失敗,這就是爲什麼我要求在這裏提示。 – hakunin

相關問題