Мы унаследовали систему, в которой есть центральный сервер для операций с очередями. Redis выбран в качестве агента очереди.
Время от времени (например, каждые 2-3 дня) загрузка ЦП службой redis превышает 100%.
Я попытался прочитать журнал, чтобы найти причину:
tail /var/log/redis/redis-server.log
Но возвращает пустой результат.
я нашел Эта статья это предлагает кое-что. Но redis не отвечает на мои команды.
Я застрял в этом вопросе, что делать и как найти проблему. Кроме того, есть ли способ ограничить использование процессора Redis?
У меня также были проблемы с использованием процессора Redis. В моем случае было много подключений Redis (клиентов) и ulimit по умолчанию для Linux 1024 открытых файла.
Высокая загрузка ЦП может быть вызвана некоторыми операциями, интенсивно использующими ЦП, например, заменой ЦП.
Вы также можете использовать команду SLOWLOG redis для регистрации длительно выполняющихся команд.
Лучшее, что вы можете сделать, чтобы отследить проблему, когда нет результатов журнала и SLOWLOG, - это привязать процесс redis и посмотреть, что происходит. В моем случае это была ошибка «Слишком много открытых файлов», но она была видна только в выводе strace, что было решено путем увеличения предела количества файлов по умолчанию более 1024.
По умолчанию Redis не имеет ограничений на использование ресурсов, поэтому все зависит от мощности сервера. Поэтому я бы порекомендовал вам настроить Redis с ограничениями:
1- Отредактируйте этот файл: /etc/redis.conf
2- Добавьте ограничение памяти (в байтах): maxmemory 536870912
(512 МБ в моем случае, но вы должны использовать ограничение оперативной памяти, которое вам нужно / нужно)
3- Также добавьте эту строку правила: maxmemory-policy volatile-lru
Если это правило активировано, когда maxmemory заполнится, redis удалит менее используемые ключи из кеша, чтобы освободить место для новых.
Если вам нужна дополнительная информация об этом, все хорошо прокомментировано /etc/redis.conf