如何修復“Redis 正忙於運行腳本”錯誤

如何修復“Redis 正忙於運行腳本”錯誤

由於從 Redis 收到以下錯誤,我的伺服器反覆崩潰:

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

但是,我似乎無法找到一種方法來確定訊息所指的這個「腳本」是什麼,以及如何終止該腳本。任何幫助,將不勝感激。

答案1

該錯誤意味著存在一個長時間運行的伺服器端 Lua 腳本。這樣的腳本由EVAL或者EVALSHARedis 指令。 「長時間運行」意味著腳本的執行時間超過了lua-time-limit配置指令定義的閾值(預設為 5000 毫秒)。

由於 Redis 是單線程的,因此它會在超時後響應“-BUSY”錯誤,以表明它仍然很忙。您可以等待腳本的執行結束,或者(例如,如果您有無限循環)發出錯誤建議的命令之一以嘗試停止腳本。

SCRIPT KILL僅當腳本不執行寫入操作時才會成功。如果腳本進行了寫入,則停止寫入的唯一方法是關閉伺服器而不通過 儲存變更SHUTDOWN NOSAVE

相關內容