Heroku 支持表示这与他们共享数据库上的 libssl 版本有关,但我们在独立数据库上的项目中也遇到了此问题。
基本上,在每个我们将其移动到新的 Cedar 栈并配置 Unicorn 为 3 个 worker 的项目中,这个错误会间歇性地发生(更靠近部署后):
错误消息:
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 还没有给出答案,而且我在 Google 上也没有找到任何信息。
他们还建议这可能与 Unicorn 工作进程重叠有关,建议我们切换到 Thin,但是性能的提升远远超过偶尔出现的错误(我认为!)。我希望有一种方法可以配置 Unicorn 以防止重叠。
如果有人遇到过这种情况,那么你是如何解决的?谢谢!
*不是他们真正的话,只是他们回复后我的感觉。
preload_app true
之后,出现了这个错误。 - CMW