2015-05-12 2 views
3

Я столкнулся с ошибками Redis::TimeoutError: Connection timed out на Heroku, и я пытаюсь выявить проблему. Я использую Resque для подключения к redis, поэтому мне интересно, как Resque подключается к redis:Когда Resque открывает соединение redis?

  1. Когда Resque подключается к redis? Когда рабочий запускается?
  2. Как долго длится соединение redis, обычно?

Непонятно, когда делаются соединения и как долго они продолжаются. Может ли кто-нибудь пролить свет на это для меня? Благодаря!

ответ

1

Обычно соединения с приложениями Redis из Rails устанавливаются лениво, когда соединение используется впервые. Для устранения неполадок иногда полезно принудительно подключить, добавив Redis PING (http://redis.io/commands/ping) в код инициализатора.

Как только соединение будет установлено, оно будет сохранено навсегда. Если соединение отключено, попытка повторного подключения произойдет в следующий раз.

Кроме того, имейте в виду, что с начала 2015 года у Heroku была постоянная проблема с установлением соединений с экземплярами Redis на AWS, поскольку соединения иногда выходили из системы. Поддержка Heroku знает об этом, поэтому вы можете получить некоторую помощь, обращаясь к ним.

+0

OP также может найти дополнительную помощь из команды CLISENT LIST Redis, особенно если Resque использует CLIENT SETNAME, чтобы установить имя для соединения. Если Resque этого не сделает, PR будет отличным способом добавить эту поддержку, поскольку это тривиально, но полезно. – antirez