Lavorare con i sistemi di caching non è facile, sopratutto quando si ha la testa stanca. Bilanciare il carico di lavoro tra i sistemi lato web e lato server è fondamentale per ottimizzare le prestazioni di portali particolarmente corposi – come quello che ho appena messo online – e garantire dei tempi di risposta accettabili. E non è raro trovarsi a fare i conti con errori di calcolo o, più banalmente, di battitura.
Questa mattina, di punto in bianco, il sito è risultato irraggiungibile con il seguente errore:
oom command not allowed when used memory > 'maxmemory'
In parole povere, vuol dire che tutto lo spazio allocato per la cache è stato usato, e che questa sostanzialmente è piena. Allocare uno spazio fisso per la cache è una delle best-practice da tenere a mente quando si lavora a questi progetti: lasciare un uso virtualmente illimitato alla cache rischia di inchiodare il server di fronte a grandi flussi di traffico.
In questi casi, invece, si può intervenire molto velocemente e riportare il sito online in pochi minuti, quanto meno se il sistema è integrato con WordPress. Per prima cosa, bisongna accedere alla directory del nostro hosting ed intervenire sul file /wp-config/object-cache.php. Questo passaggio è necessario se utilizzare l’apposito plugin di Redis, altimenti dovrete modificare direttamente il file di configurazione di WordPress.
Il mio consiglio è: non cancellate il file, come consiglia di fare la schermata di errore. Rinominatelo (io ad esempio aggiungo il classico old alla fine, prima dell’estenzione) perchè poi potrete riattivalro senza errori a fine operazione, e senza dover reinstallare/riconfigurare il plugin di Redis. Una cosa in meno da fare.
A questo punto, bisogna accedere via SSH al vostro server ed andare a modificare il file di configurazione di Redis. Il percorso dovrebbe essere lo stesso per tutte le installazioni, ossia /etc/redis/redis.conf. Non perdete tempo con le impostazioni configurabili da linea di comando, perchè ad ogni riavvio verrebbero azzerate. Aprite il file in questione con i privilegi di root ed usando l’editor che preferite (io sono rimasto a vi) ed impostate i seguenti comandi:
maxmemory 12gbmaxmemory-policy allkeys-lru
Bisogna ovviamente aumentare lo spazio allocato per la cache. Io lo avevo settato, sbagliando, a 2GB, invece vado ad impostarne 12GB (come doveva essere all’inizio). Inoltre, è importante settare la policy che rimuove automaticamente le vecchie richieste, meno utilizzate rispetto ad altre, quando si raggiungono i limiti di cache. Se non è attiva, inserire manualmente la stringa subito dopo la definizione di default.
Fatto questo, non vi resta riavviare Redis:
systemctl redis restart
Ed al riavvio, giusto per farlo ripartire da zero, lanciare una pulizia totale della cache immagazzinata:
redis-cli FLUSHALL
Questi due comandi vanno lanciati sempre con il privilegio di root. Potete poi verificare i nuovi parametri con il comando:
redis-cli INFO memory
Fatto questo, tornate nella directory di WordPress e rimettere il nome originale al file che avevate rinominato. A questo punto il vostro sito era già nuovamente raggiungibile, mentre la configurazione di Redis si ristabilità in autonomia. In totale ci possono volere si e no 5 minuti contro gli anche 15 di riavvio di un server in caso di sovraccarico.
Lascia un commento Annulla risposta