SLOWLOG

Тема дорожной карты · Redis

SLOWLOG — встроенная команда Redis для захвата и анализа команд, превысивших настраиваемый порог времени выполнения, что делает её основным инструментом диагностики узких мест производительности in-memory хранилища. Порог задаётся параметром slowlog-log-slower-than 10000 в redis.conf (значение в микросекундах; 10 000 мкс = 10 мс), а slowlog-max-len 128 управляет количеством записей, хранящихся Redis в кольцевом in-memory журнале. SLOWLOG GET возвращает каждую записанную запись с уникальным ID, временной меткой, продолжительностью выполнения, аргументами команды и адресом клиента, давая операторам точное представление о том, какие команды Redis вызывают всплески задержки в распределённом кэше. SLOWLOG LEN сообщает текущее количество записей, а SLOWLOG RESET очищает журнал, позволяя создать чистую базу перед нагрузочным тестом или изменением конфигурации. Регулярный просмотр вывода SLOWLOG вместе с INFO commandstats является лучшей практикой для сохранения предсказуемой задержки Redis в продакшн-рабочих нагрузках кэширования и хранения сессий.

Как это работает

SLOWLOG использует INFO (server stats), MONITOR (live-поток команд — только для debug, дорого), SLOWLOG (лог медленных команд с порогом slowlog-log-slower-than), CLIENT LIST (текущие соединения), LATENCY-команды (встроенная диагностика latency). Внешнее: prometheus redis_exporter, RedisInsight (GUI), Grafana-дашборды. Ключевые метрики: hit ratio (keyspace_hits / (hits + misses)), evicted keys, memory fragmentation ratio, connected clients, replication lag.

Когда применять

redis_exporter — с первого дня; метрики крошечные, но спасают день, когда что-то идёт не так. Алерты: memory > 80% maxmemory (eviction storm близко), connected_clients > 80% maxclients, replication lag > 30s, падение hit ratio > 20% за 1h. SLOWLOG — для поиска дорогих команд (KEYS, HGETALL на большом хеше, ZRANGEBYSCORE на огромном sorted set). Никогда не запускайте MONITOR в production больше секунд.

Типичные ошибки

Ловушки SLOWLOG: MONITOR оставлен работать и валит throughput; alerts только на абсолютные метрики (нет rate() — пропускаете тренды); игнор memory fragmentation (mem_fragmentation_ratio > 1.5 — RAM тратится впустую — рестарт или defrag); нет разделения latency cache-miss от total request latency на дашбордах.

Связанные понятия

Полезные ресурсы