2012-11-20 65 views
0

我剛剛在我的RefineryCMS Rails 3.2.3應用程序中安裝了newrelic_rpm gem。我按照說明覆制到newrelic.yml配置文件中。我的應用程序與Heroku一起部署在Cedar堆棧上,所以說明非常簡單。New Relic ActiveRecord :: ConnectionNotEstablised Rails 3.2.3錯誤

https://devcenter.heroku.com/articles/newrelic#cedar

但是,在運行「軌道服務器」上我的開發給了我這個錯誤消息:

/home/xxx/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:398:in `retrieve_connection': ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished) 

在newrelic.yml文件設置agent_enabled值設定爲「假」允許的服務器重新開始。設置我的許可證密鑰和應用程序名稱環境變量沒有區別。有趣的是,即使我不能讓應用程序在我的開發盒上啓動,但是當我將它部署到Heroku時,一切正常 - 我現在正在獲取新的文物統計信息。大!

我的解決方法是從gemfile中刪除newrelic_rpm(這是安裝說明所要做的),並且只將它放到:production組中。很明顯,新的文物只在生產中有用,所以沒什麼大不了的。

group :production do 
    ... other gems 
    gem 'newrelic_rpm' 
end 

任何人都經歷過這個,或者知道它爲什麼要造成一個ActiveRecord錯誤(在新的遺物,在所有的錯誤跟蹤沒有提及)?

回答

0

您遇到的問題看起來像newrelic_rpm gem中的一個錯誤,與我們(我在New Relic工作)最近的3.6.4發行版解決了。我建議你嘗試更新到3.6.4,看看問題是否依然存在。通過解釋:我們在newrelic_rpm gem中有一些名爲EnvironmentReport的東西,它收集關於您的應用程序正在執行的環境(Rails版本,gem版本,數據庫適配器,Ruby版本等)的信息以顯示在UI。在newrelic_rpm gem的3.6.0版本中,我們將EnvironmentReport的生成推入後臺線程。由於EnvironmentReport可能引用了ActiveRecord::Base常量,因此生成它可能會觸發某些不是線程安全的ActiveRecord初始化代碼路徑。如果環境報告恰好在錯誤的時間點擊ActiveRecord::Base,它可能會觸發您在主線程中看到的錯誤。

我們在3.6.4中解決了這個問題,將EnvironmentReport的生成移回到主線程中。

對不起,讓我們知道如果3.6.4不能解決您的問題。

編輯 - 嗯,剛剛注意到你在3.6.0發佈之前詢問過這個問題。我仍然建議嘗試3.6.4,因爲我懷疑舊版本的newrelic_rpm中可能存在類似的競爭條件。