Как исправить ошибку «Redis занят выполнением скрипта»

Как исправить ошибку «Redis занят выполнением скрипта»

Мои серверы постоянно выходят из строя из-за получения следующей ошибки от Redis:

BUSY Redis is busy running a script. You can only call SCRIPT KILL or SHUTDOWN NOSAVE.

Однако я не могу найти способ определить, что это за "скрипт", о котором идет речь в сообщении, и как я могу завершить скрипт. Любая помощь будет оценена.

решение1

Ошибка означает, что есть долго работающий серверный скрипт Lua. Такой скрипт вызываетсяEVALилиEVALSHAКоманды Redis. «Длительное выполнение» означает, что время выполнения скрипта превысило порог, определенный lua-time-limitдирективой конфигурации (по умолчанию 5000 мс).

Поскольку Redis является однопоточным, он отвечает ошибкой "-BUSY" после тайм-аута, чтобы указать, что он все еще, ну, занят. Вы можете либо дождаться окончания выполнения скрипта, либо (например, если у вас бесконечный цикл) выполнить одну из команд, предложенных ошибкой, чтобы попытаться остановить скрипт.

SCRIPT KILLбудет выполнен успешно только в том случае, если скрипт не выполнил никаких операций записи. В случае, если скрипт выполнил запись, единственный способ остановить его — это выключить сервер без сохранения изменений через SHUTDOWN NOSAVE.

Связанный контент