Мои серверы постоянно выходят из строя из-за получения следующей ошибки от Redis:
BUSY Redis is busy running a script. You can only call SCRIPT KILL or SHUTDOWN NOSAVE.
Однако я не могу найти способ определить, что это за «сценарий», о котором идет речь в сообщении, и как я могу завершить его. Любая помощь будет оценена.
Ошибка означает, что существует длительный серверный Lua-скрипт. Такой сценарий вызывается EVAL
или EVALSHA
Команды Redis. "Длительное выполнение" означает, что время выполнения скрипта превысило порог, определенный lua-time-limit
директива конфигурации (по умолчанию 5000 мс).
Поскольку Redis является однопоточным, он отвечает ошибкой «-BUSY» по истечении тайм-аута, указывая на то, что он все еще занят. Вы можете либо дождаться завершения выполнения сценария, либо (если у вас, например, бесконечный цикл) выполнить одну из команд, предложенных ошибкой, чтобы попытаться остановить сценарий.
SCRIPT KILL
будет успешным только в том случае, если скрипт не выполнил никаких операций записи. В случае, если запись была произведена сценарием, единственный способ остановить это - выключить сервер без сохранения изменений через SHUTDOWN NOSAVE
.