7
達到我使用celerybeat在Heroku與RedisToGo納米附加最大的客戶在Heroku和Redistogo納米
有一個網頁測功機和一個工人的DYNO
的celerybeat工人被設置成進行每分鐘的任務。
的問題是:每當我部署一個新的提交,DYNOS重啓,我得到這個錯誤
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...
和這些日誌無休止地繼續下去。直到我停止了這兩個dynos並重新啓動它們。
它已經成爲一個問題,因爲它幾乎每次部署新提交時都會發生。
任何想法爲什麼會發生這種情況,以及如何解決這個問題?
+1 @Winfield可能是正確的,你可以發出'info'命令來獲取當前'connected_clients'的數量,這樣就可以檢查你當前實例的限制。您用於發佈「信息」的連接也會計數。如果您在排除實例故障時需要任何幫助,我只需通過電子郵件[email protected]在redistogo上工作即可。 – mogramer
有沒有辦法讓redis/heroku在部署時關閉舊堆棧上的所有連接? – Erik
問題在於時間 - 你的新的動力裝置即將到來,而舊的裝置正在降落。特別是如果您使用Preboot進行零宕機部署。保證所有舊連接和資源的唯一方法是在使用新連接和資源之前釋放所有舊連接和資源,這是在部署過程中將整個網站都關閉 - 我懷疑你是否想要這樣做。 – Winfield