DBAtlas · Atlas d'exploitation des bases de données

BUSY: BUSY Redis is busy running a script. You can only call SCRIPT KILL or SHUTDOWN NOSAVE (Redis occupé par l'exécution d'un script)

Redis

Que signifie cette erreur ?

Un script Lua ou une fonction de longue durée est en cours d'exécution et a dépassé busy-reply-threshold (nommé lua-time-limit avant Redis 7 ; 5000 ms par défaut). Redis étant mono-thread, il ne peut pas traiter d'autres commandes pendant ce temps ; seules SCRIPT KILL (FUNCTION KILL pour les fonctions) ou SHUTDOWN NOSAVE sont acceptées.

Cause

Boucle infinie ou script/fonction Lua de très longue durée, calcul lourd, script bouclant sur de grandes données, ou appel EVAL mal écrit.

Comment la corriger

Si le script n'a pas modifié de données, arrêtez-le : SCRIPT KILL. Si le script a déjà effectué des écritures, SCRIPT KILL ne fonctionne pas ; en dernier recours, pour préserver la cohérence des données, SHUTDOWN NOSAVE peut être nécessaire (les données non sauvegardées sont perdues ; soyez prudent). Écrivez des scripts courts et déterministes. Découpez les opérations longues en morceaux. Revoyez le paramètre busy-reply-threshold (anciennement lua-time-limit).

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur