PG::ConnectionBad с рельсами и pgbouncer
У меня есть рельсы и pgBouncer, и у меня есть reconnect: true
в database.yml
но я продолжаю получать это в консоли:
ActiveRecord::StatementInvalid: PG::ConnectionBad: PQconsumeInput() server closed the connection unexpectedly
Та же ошибка происходит в sidekiq, но не в сети. Разве рельсы не должны переподключаться после этой ошибки?
1 ответ
Это был тайм-аут на сервере (о котором я не знал). Так что это не имеет никакого отношения к rails/pgbouncer, на самом деле reconnect
флаг в database.yml
больше не используется в рельсах.
Может быть, это решение для настройки параметров конфигурации Postgresql ниже.
tcp_keepalives_idle (целое число)
Указывает количество секунд бездействия, по истечении которых TCP должен отправить клиенту сообщение поддержки активности. Значение 0 использует системное значение по умолчанию. Этот параметр поддерживается только в системах, которые поддерживают TCP_KEEPIDLE или эквивалентный параметр сокета, и в Windows; в других системах оно должно быть равно нулю. В сеансах, подключенных через сокет Unix-домена, этот параметр игнорируется и всегда читается как ноль.
tcp_keepalives_interval (integer)
Задает количество секунд, по истечении которых сообщение подтверждения активности TCP, которое не было подтверждено клиентом, должно быть передано повторно. Значение 0 использует системное значение по умолчанию. Этот параметр поддерживается только в системах, которые поддерживают TCP_KEEPINTVL или эквивалентный параметр сокета, и в Windows; в других системах оно должно быть равно нулю. В сеансах, подключенных через сокет Unix-домена, этот параметр игнорируется и всегда читается как ноль.
tcp_keepalives_count (целое число)
Задает количество сообщений поддержки активности TCP, которые могут быть потеряны до того, как соединение сервера с клиентом будет считаться прерванным. Значение 0 использует системное значение по умолчанию. Этот параметр поддерживается только в системах, которые поддерживают TCP_KEEPCNT или эквивалентную опцию сокета; в других системах оно должно быть равно нулю. В сеансах, подключенных через сокет Unix-домена, этот параметр игнорируется и всегда читается как ноль.