【发布时间】:2013-05-19 10:52:15
【问题描述】:
在经历了几次停机之后,我们最近升级到 Heroku 中的生产环境(Crane 数据库加上 2 个 Web dyno),但我们没有看到任何改进。事实上,升级后可靠性似乎有所下降。
根本原因似乎是以下异常: PG::Error(SSL SYSCALL 错误:检测到 EOF 这会导致测功机失败并 - 最终 - 重新启动,但不会在导致停机之前。
我不知道是什么原因造成的。常见的罪魁祸首似乎是 Resque 和 Unicorn,我都没有使用它们。我们正在使用 pg gem 1.14.1 在 Heroku Cedar 上的 rails 3.2.11
日志在崩溃时报告以下内容:
2013-05-23T19:01:33+00:00 app[heroku-postgres]: source=HEROKU_POSTGRESQL_PINK measure.current_transaction=34490 measure.db_size=38311032bytes measure.tables=19 measure.active-connections=7 measure.waiting-connections=0 measure.index-cache-hit-rate=0.99438 measure.table-cache-hit-rate=0.8824
2013-05-23T19:01:35.123633+00:00 app[web.2]:
2013-05-23T19:01:35.123633+00:00 app[web.2]: PG::Error (SSL SYSCALL error: EOF detected
2013-05-23T19:01:35.123633+00:00 app[web.2]: ):
我已阅读以下内容:https://groups.google.com/forum/?fromgroups#!topic/heroku/a6iviwAFgdY 但找不到任何可能有帮助的内容。
【问题讨论】:
-
听起来 appserver 和 DB 之间可能存在间歇性网络问题,尽管它也可能是 appserver 节点突然终止(比如进程崩溃)而不是完全断开连接。您需要查看 PostgreSQL 日志以及应用服务器日志。
-
我也很怀疑这一点。 Heroku postgres 日志并没有真正显示太多有趣的信息,但是查看 ruby 堆栈跟踪:
connection_adapters/postgresql_adapter.rb:294:in 'exec'connection_adapters/postgresql_adapter.rb:294:in 'dealloc'我将尝试以下猴子补丁:github.com/rails/rails/issues/3392#issuecomment-4516400 -
这个猴子补丁似乎可以阻止上述异常的再次发生。然而,它并没有阻止潜在的问题 - Heroku web dynos 崩溃/计时,然后挂起,比我希望的要频繁得多!
-
这是你需要在 Heroku 的“支持”下完成的事情。
标签: ruby-on-rails postgresql heroku connection pg