Практическое задание

Эта задача — шаг 6 курса «Redis в проде»

Самая медленная команда в SLOWLOG

средне~7 мин

Пользователи жалуются, что Redis время от времени «подвисает» на сотни миллисекунд. Redis однопоточный: пока выполняется одна тяжёлая команда, все остальные клиенты ждут.

Журнал медленных команд уже включён и успел собрать записи. Найди в нём самую медленную команду (с наибольшим временем выполнения) и запиши в файл /root/slow.txt только её имя — одно слово, например KEYS.

Журнал не очищай и настройки не меняй.

Что потренируешь:
  • redis
  • SLOWLOG
  • slowlog-log-slower-than
  • производительность

Разбор темы

Redis выполняет команды в одном потоке, поэтому одна O(N)-команда над большим ключом — KEYS, SORT, LRANGE на весь список, HGETALL/SMEMBERS на огромных коллекциях — блокирует всех остальных клиентов на всё время своей работы. SLOWLOG записывает команды, чьё выполнение (без сетевых задержек и ожидания в очереди) длилось дольше slowlog-log-slower-than микросекунд; журнал хранит последние slowlog-max-len записей в памяти. Это первый инструмент при жалобах на «подвисания»: найти, какая команда и над каким ключом съедает время, а затем переписать её (SCAN вместо KEYS, LRANGE порциями, сортировка на стороне приложения или через sorted set) или разбить большой ключ.

Что проверяется

  1. файл /root/slow.txt создан
  2. найдена самая медленная команда

Как это выглядит