在Heroku,Cedar,与Unicorn:获取ActiveRecord :: StatementInvalid:PGError:SSL SYSCALL错误:检测到EOF

时间:2011-12-13 22:20:14

标签: ruby-on-rails ruby-on-rails-3 postgresql heroku unicorn

Heroku支持称这与他们在共享数据库上的libssl版本有关,但我们也在专用数据库上的项目中遇到过它。

基本上这个错误经常发生(接近部署之后)我们已经转移到新的Cedar堆栈,而Unicorn被配置为3个工作人员:

错误讯息:

ActiveRecord::StatementInvalid: PGError: SSL SYSCALL error: EOF detected : SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum WHERE a.at

Where:
some_controller#index
[PROJECT_ROOT]/vendor/bundle/ruby/1.9.1/gems/activerecord-3.0.11/lib/active_record/connection_adapters/postgresql_adapter.rb, line 505

没有来自heroku的答案,但也许等待谁知道我们升级共享数据库服务器的时间*我还没有在谷歌上找到任何东西。

他们还建议它与独角兽的工人重叠有关,我们应该切换到Thin,但性能提升非常值得偶尔出错(我想!)。我希望有一种方法可以配置Unicorn以防止重叠。

有没有人遇到过这个,如果有的话,你做了什么来解决它?谢谢!

*不是他们的实际用语,而是他们回应后的感受。

1 个答案:

答案 0 :(得分:24)

Heroku支持建议我将此添加到我的Unicorn配置中:

附加到您的config/unicorn.rb

after_fork do |server, worker|
  if defined?(ActiveRecord::Base)
    ActiveRecord::Base.establish_connection 
  end
end

我添加了它,我们整天都没有看到一个PGError: SSL SYSCALL错误。