Come appare il messaggio
{"reqId":"Yk3x...","level":3,"message":"RedisException: Redis went away in /var/www/nextcloud/lib/private/RedisFactory.php"}Cause frequenti
- Redis non è in esecuzione: è andato in crash, è stato fermato da un aggiornamento o terminato dall'OOM killer.
- Il blocco
redisinconfig.phppunta a host, porta o socket sbagliati. - Redis ascolta su un socket Unix, ma l'utente del web server non è nel gruppo
redisoppureunixsocketpermè troppo restrittivo. - Redis chiude connessioni inattive o sovraccariche, ad esempio per un
timeoutbasso,maxclientso un limite di memoria.
Verifica
- Redis è in esecuzione?
systemctl status redis-server --no-pager - Redis risponde sul socket?
redis-cli -s /run/redis/redis-server.sock ping - Cosa ha configurato Nextcloud?
- Perché Redis si è fermato?
Soluzione
- Avvialo e lascialo abilitato:
systemctl enable --now redis-server. - Fai usare a Nextcloud lo stesso endpoint su cui ascolta Redis, ad esempio
occ config:system:set redis host --value=/run/redis/redis-server.sockeocc config:system:set redis port --value=0 --type=integer. - Con il socket, aggiungi l'utente del web server al gruppo:
usermod -aG redis www-data, impostaunixsocketperm 770inredis.conf, poi riavvia Redis e PHP-FPM. - Se il log del kernel mostra Redis terminato per memoria, aggiungi RAM all'host o riduci gli altri servizi. Imposta un
maxmemoryadeguato. - Dopo qualche minuto ricontrolla
nextcloud.logper vedere se l'errore è sparito.
Domande frequenti
Posso togliere Redis da config.php?
Sì, come prova o soluzione temporanea. Nextcloud usa allora il database per il file locking, che è più lento e può causare più conflitti di lock. Meglio riparare Redis che farne a meno.
Si perdono dati se Redis sparisce?
No. Redis tiene lock e cache, non i tuoi file. Dopo il riavvio i lock vengono ricostruiti. I lock bloccati dopo un crash si risolvono con la voce sui file bloccati in questo lessico.