На 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 пока нет, кроме того, может быть, подождите, кто знает, сколько времени нам потребуется, чтобы обновить наши общие серверы баз данных *, и я ничего не нашел в Google.

Они также предположили, что это связано с перекрытием рабочих процессов unicorn и что мы должны переключиться на Thin, но прирост производительности стоит случайной ошибки (я думаю!). Я надеюсь, что есть способ настроить Unicorn, чтобы предотвратить перекрытие.

Кто-нибудь сталкивался с этим, и если да, то что вы сделали, чтобы решить эту проблему? Спасибо!

*не их настоящие слова, просто то, что я чувствовал после их ответа.


person Joe Sak    schedule 13.12.2011    source источник
comment
были ли это точные слова их службы поддержки? Если так, то это очень непрофессионально...   -  person leonardoborges    schedule 14.12.2011
comment
У меня такие же ошибки. Я использую unicorn с 3 рабочими.   -  person soulnafein    schedule 14.12.2011
comment
Нет, это были не их настоящие слова, просто то, что они заставили меня почувствовать: не уверен, КОГДА это будет обновляться, и это может не решить проблему. Они сказали, что мы должны попробовать выделенную БД, но мы видим те же ошибки в приложении, которое у нас есть на выделенной базе данных.   -  person Joe Sak    schedule 14.12.2011
comment
Для справки в будущем: эта ошибка начала возникать у нас после того, как мы добавили preload_app true в unicorn.rb.   -  person CMW    schedule 05.06.2012
comment
Да, и preload_app true требуется для аддона New Relic.   -  person Joe Sak    schedule 26.06.2012


Ответы (1)


Поддержка Heroku предложила мне добавить это в мою конфигурацию Unicorn:

Добавить к вашему config/unicorn.rb:

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

Я добавил его, и за весь день мы не увидели ни одной ошибки PGError: SSL SYSCALL.

person Joe Sak    schedule 14.12.2011
comment
Работал и для меня. Я также думаю, что моя проблема началась, когда я представил New Relic и опцию preload app true. Это, казалось, исправило это для меня. - person Andrew; 22.08.2012
comment
Да! Большое спасибо! Как раз собирался открыть тикет в службу поддержки Heroku. - person ndbroadbent; 22.09.2012