На Heroku, Cedar, с Unicorn: получение ActiveRecord :: StatementInvalid: PGError: ошибка SSL SYSCALL: обнаружен EOF - PullRequest
10 голосов
/ 14 декабря 2011

Поддержка 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.

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

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

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

1 Ответ

24 голосов
/ 15 декабря 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...