Я управляю набором сервисов, которые используют redis как очередь, брокер. Как сельдерей.
Когда я запускаю свои контейнеры (используя docker-compose), все работает нормально, но через некоторое время службы, пытающиеся подключиться к redis, выдают исключение Timeout.
Это мои журналы контейнера redis:
1:C 09 Jan 15:10:30.407 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 09 Jan 15:10:30.408 # Redis version=4.0.11, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 09 Jan 15:10:30.408 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
1:M 09 Jan 15:10:30.411 * Running mode=standalone, port=6379.
1:M 09 Jan 15:10:30.411 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1:M 09 Jan 15:10:30.411 # Server initialized
1:M 09 Jan 15:10:30.411 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
1:M 09 Jan 15:10:30.412 * Ready to accept connections
1:M 09 Jan 16:10:48.695 * 1 changes in 3600 seconds. Saving...
1:M 09 Jan 16:10:48.731 * Background saving started by pid 19
19:C 09 Jan 16:10:48.738 * DB saved on disk
19:C 09 Jan 16:10:48.739 * RDB: 0 MB of memory used by copy-on-write
1:M 09 Jan 16:10:48.833 * Background saving terminated with success
Я использую конфигурацию по умолчанию, это ее раздел docker-compose:
redis:
image: redis:latest
И это исключение, которое я получаю из своей колбы с сельдереем:
kombu.exceptions.OperationalError: Timeout connecting to server
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/app/env/lib/python3.6/site-packages/celery/beat.py", line 241, in apply_entry
result = self.apply_async(entry, producer=producer, advance=False)
File "/app/env/lib/python3.6/site-packages/celery/beat.py", line 358, in apply_async
entry, exc=exc)), sys.exc_info()[2])
File "/app/env/lib/python3.6/site-packages/vine/five.py", line 178, in reraise
raise value.with_traceback(tb)
File "/app/env/lib/python3.6/site-packages/celery/beat.py", line 350, in apply_async
**entry.options)
File "/app/env/lib/python3.6/site-packages/celery/app/task.py", line 535, in apply_async
**options
File "/app/env/lib/python3.6/site-packages/celery/app/base.py", line 745, in send_task
amqp.send_task_message(P, name, message, **options)
File "/usr/lib/python3.6/contextlib.py", line 99, in __exit__
self.gen.throw(type, value, traceback)
File "/app/env/lib/python3.6/site-packages/kombu/connection.py", line 436, in _reraise_as_library_errors
sys.exc_info()[2])
File "/app/env/lib/python3.6/site-packages/vine/five.py", line 178, in reraise
raise value.with_traceback(tb)
File "/app/env/lib/python3.6/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
yield
File "/app/env/lib/python3.6/site-packages/celery/app/base.py", line 744, in send_task
self.backend.on_task_call(P, task_id)
File "/app/env/lib/python3.6/site-packages/celery/backends/redis.py", line 265, in on_task_call
self.result_consumer.consume_from(task_id)
File "/app/env/lib/python3.6/site-packages/celery/backends/redis.py", line 126, in consume_from
self._consume_from(task_id)
File "/app/env/lib/python3.6/site-packages/celery/backends/redis.py", line 132, in _consume_from
self._pubsub.subscribe(key)
File "/app/env/lib/python3.6/site-packages/redis/client.py", line 2482, in subscribe
ret_val = self.execute_command('SUBSCRIBE', *iterkeys(new_channels))
File "/app/env/lib/python3.6/site-packages/redis/client.py", line 2404, in execute_command
self._execute(connection, connection.send_command, *args)
File "/app/env/lib/python3.6/site-packages/redis/client.py", line 2408, in _execute
return command(*args)
File "/app/env/lib/python3.6/site-packages/redis/connection.py", line 610, in send_command
self.send_packed_command(self.pack_command(*args))
File "/app/env/lib/python3.6/site-packages/redis/connection.py", line 585, in send_packed_command
self.connect()
File "/app/env/lib/python3.6/site-packages/redis/connection.py", line 486, in connect
raise TimeoutError("Timeout connecting to server")
Что может быть не так?
Если я так и не смог подключиться, я понимаю, но проблема начинается через некоторое время, и он возвращает время ожидания до тех пор, пока я не перезапущу контейнер.
Спасибо!