복붙노트

[REDIS] 최대 클라이언트에게 Heroku와 Redistogo 나노에 도달

REDIS

최대 클라이언트에게 Heroku와 Redistogo 나노에 도달

나는 RedisToGo 나노 부가 기능으로 Heroku가에 celerybeat를 사용하고

하나의 웹 다이노 한 노동자 다이노이있다

celerybeat 작업자는 작업 분마다 수행하도록 설정되어 있습니다.

문제는 : 나는 새가 다시 시작 동력계, 커밋 배포, 나는이 오류가 때마다

2014-02-27T13:19:31.552352+00:00 app[worker.1]: Traceback (most recent call last):
2014-02-27T13:19:31.552352+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/celery/worker/consumer.py", line 389, in start
2014-02-27T13:19:31.552352+00:00 app[worker.1]:     self.reset_connection()
2014-02-27T13:19:31.552352+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/celery/worker/consumer.py", line 727, in reset_connection
2014-02-27T13:19:31.552352+00:00 app[worker.1]:     self.connection = self._open_connection()
2014-02-27T13:19:31.552352+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/celery/worker/consumer.py", line 792, in _open_connection
2014-02-27T13:19:31.552352+00:00 app[worker.1]:     callback=self.maybe_shutdown)
2014-02-27T13:18:23.864287+00:00 app[worker.1]:     self.on_connect()
2014-02-27T13:18:23.864287+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/redis/connection.py", line 263, in on_connect
2014-02-27T13:18:23.864287+00:00 app[worker.1]:     if nativestr(self.read_response()) != 'OK':
2014-02-27T13:18:23.864287+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/redis/connection.py", line 314, in read_response
2014-02-27T13:18:23.864287+00:00 app[worker.1]:     raise response
2014-02-27T13:18:23.864287+00:00 app[worker.1]: ResponseError: max number of clients reached
2014-02-27T13:19:31.552352+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/kombu/connection.py", line 272, in ensure_connection
2014-02-27T13:19:31.552352+00:00 app[worker.1]:     interval_start, interval_step, interval_max, callback)
2014-02-27T13:19:31.552591+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/kombu/utils/__init__.py", line 218, in retry_over_time
2014-02-27T13:19:31.552591+00:00 app[worker.1]:     return fun(*args, **kwargs)
2014-02-27T13:19:31.552591+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/kombu/connection.py", line 162, in connect
2014-02-27T13:19:31.552591+00:00 app[worker.1]:     return self.connection
2014-02-27T13:19:31.552591+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/kombu/connection.py", line 617, in connection
2014-02-27T13:18:23.870811+00:00 app[worker.1]: [2014-02-27 13:18:23,870: ERROR/MainProcess] consumer: Connection to broker lost. Trying to re-establish the connection...

그 로그는 끝없이 계속. 난 둘 다 동력계를 중지하고 다시 시작할 때까지.

그것은 새가 배포 커밋 거의 모든 시간을 발생하기 때문에이 문제가되고있다.

어떤 아이디어 왜 일어나고,이 방법이 문제를 해결하기 위해?

해결법

  1. ==============================

    1.나노 redistogo 계획은 10 개의 동시 레디 스 연결 모자.

    나노 redistogo 계획은 10 개의 동시 레디 스 연결 모자.

    사용 레디 스의 커넥트의 수는 프런트 엔드와 셀러리 노동자 설정에 따라 달라집니다. 프로덕션 스택> = 5 레디 스 연결을 사용하는 것 같은데.

    당신이 새로운 코드를 배포 할 때, Heroku가 완전히 새로운 스택을 회전합니다. 당신이 사용하고있는이 수단> = 배포시 10 개 레디 스 연결.

    이 문제를 해결하는 방법에는 두 가지가 있습니다 :

    이는 자원 고갈의 간단한 문제입니다. 난 그냥 큰 RedisToGo 계획에 대해 지불 할 것입니다.

  2. from https://stackoverflow.com/questions/22070115/maximum-clients-reached-on-heroku-and-redistogo-nano by cc-by-sa and MIT license