"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구성 지시문에 의해 정의된 임계값(기본적으로 5000ms)을 초과했음을 의미합니다.

Redis는 단일 스레드이기 때문에 시간 초과 후 "-BUSY" 오류로 응답하여 여전히 사용 중임을 나타냅니다. 스크립트 실행이 끝날 때까지 기다리거나(예를 들어 무한 루프가 있는 경우) 오류에서 제안하는 명령 중 하나를 실행하여 스크립트 중지를 시도할 수 있습니다.

SCRIPT KILL스크립트가 쓰기 작업을 수행하지 않은 경우에만 성공합니다. 스크립트에 의해 쓰기가 이루어진 경우 이를 중지하는 유일한 방법은 를 통해 변경 사항을 저장하지 않고 서버를 종료하는 것입니다 SHUTDOWN NOSAVE.

관련 정보