BUSY: BUSY: Redis занят выполнением скрипта. Можно вызвать только SCRIPT KILL или SHUTDOWN NOSAVE
RedisЧто это значит?
Выполняется длительный скрипт или функция Lua, превысившие busy-reply-threshold (до Redis 7 назывался lua-time-limit; по умолчанию 5000 ms). Поскольку Redis однопоточный, в это время он не может обрабатывать другие команды; принимаются только SCRIPT KILL (FUNCTION KILL для функций) или SHUTDOWN NOSAVE.
Почему возникает?
Бесконечный цикл или очень долго выполняющийся скрипт/функция Lua, тяжёлые вычисления, скрипт, перебирающий большие данные, или неудачно написанный вызов EVAL.
Как исправить
Если скрипт не изменял данные, остановите его: SCRIPT KILL. Если скрипт уже выполнил запись, SCRIPT KILL не сработает; в качестве последнего средства для сохранения согласованности данных может потребоваться SHUTDOWN NOSAVE (несохранённые данные теряются; будьте осторожны). Пишите короткие и детерминированные скрипты. Разбивайте длительные операции на части. Пересмотрите настройку busy-reply-threshold (ранее lua-time-limit).
Ещё по этой СУБД
- MASTERDOWNMASTERDOWN: связь с MASTER разорвана, а replica-serve-stale-data имеет значение 'no'
- CLUSTERDOWNCLUSTERDOWN: кластер не работает / hash slot не обслуживается
- LOADINGLOADING: Redis загружает набор данных в память
- MISCONFMISCONF: Redis настроен на сохранение снимков RDB, но сейчас не может сохранять данные на диск
- CROSSSLOTCROSSSLOT: ключи в запросе не попадают в один и тот же слот
- MOVEDMOVED slot ip:port (перенаправление в кластере)
- ASKASK slot ip:port (перенаправление в кластере)