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

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以防止重叠。

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

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

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

附加config/unicorn.rb

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

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