Redis server went away, причины?

Есть прямо таки мистическая проблема с redis, который периодически возвращает ошибку Redis server went away.

Дано:
- 1 виртуальный сервер - 2 ядра (процессор IntelXeon E5-2670), 8Гб оперативной памяти, debian 8
- на сервере стоит Redis 3.2.9
- нагрузка на Redis крайне небольшая:
8b85189d06294dad89c2c4dc592f4a7e.jpg

Периодически клиенты redis (php7, extension - https://github.com/phpredis/phpredis) получают ошибку Redis server went away. Закономерности ошибок не найдено.
Как правило, клиенты получают такую ошибку при попытке первый раз соединиться с Redis.

Что пытался сделать:
- отключил aof и rdb полностью. Проверил через логи - снапшоты прекратились. Но это не помогло.

- дальше пытался тюнить сам Redis:
-- maxmemory = 6Gb
-- timeout = 60
-- tcp-backlog=65000
-- maxclients = 100000
-- tcp-keepalive = 60
-- maxmemory-policy = allkeys-lru

- потом пытался тюнить систему:
-- /proc/sys/fs/file-max = 817894
-- /proc/sys/net/core/somaxconn = 65000
-- vm.overcommit_memory=2
-- vm.overcommit_ratio = 100
-- net.ipv4.tcp_max_syn_backlog=5000
-- limits:
ad8c4a698b4d4ccb98dbe98e66154ac2.jpg

- потом решил посмотреть redis slowlog. Подключил slave и все тяжелые запросы вынес на него.
Сейчас в slowlog настроен как slowlog-log-slower-than=5000 (5мс) и он пустой. Если уменьшить его до 500 (0.5мс), то появляются команды get\exists\smembers. (хотя exists по идее не должен быть таким долгим, но в slowlog иногда он попадает со значениями 600-1000 (0.6-1мс))

В итоге это все не помогло.

Из нюансов:
- сейчас в php для redis указан timeout в 1 секунду. C данным timeout и при постоянной однотипной нагрузке, redis может как без ошибок в течении 1 часа работать, так и кидать ошибки по 2-10 в час. Если timeout уменьшить до 0.5, то количество ошибок возрастает. При этом пинг от клиента до сервера redis - 0.6-1 мс

- redis-benchmark показывает хорошую картинку:
88add4c592e440a9b8c3993a8db6fbd6.jpg

- пробовал написать скрипт на php, который через fork создает 1000 клиентов по 500 команд incr каждый. Так вот почти всегда скрипт отрабатывает без проблем, но периодически и он дает ошибки.

Куда дальше копать - ума не приложу. Может у кого-то есть идеи или кто-то сталкивался с подобным?
  • Вопрос задан
  • 3567 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы