DBAtlas · 数据库运维图谱

BUSY: BUSY Redis is busy running a script. You can only call SCRIPT KILL or SHUTDOWN NOSAVE(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)设置。

在 DBAtlas 中打开 →

同一数据库的其他条目