BUSY: BUSY Redis is busy running a script. You can only call SCRIPT KILL or 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 Link with MASTER is down and replica-serve-stale-data is set to 'no'
- CLUSTERDOWNCLUSTERDOWN The cluster is down / Hash slot not served
- LOADINGLOADING Redis is loading the dataset in memory
- MISCONFMISCONF Redis is configured to save RDB snapshots, but it's currently unable to persist to disk
- CROSSSLOTCROSSSLOT Keys in request don't hash to the same slot
- MOVEDMOVED slot ip:port (클러스터 리다이렉트)
- ASKASK slot ip:port (클러스터 리다이렉트)