Redis: errore di annullamento della serializzazione setup:static-content:deploy
Questo articolo fornisce una correzione per l'errore di annullamento della serializzazione Redis durante l'esecuzione di magento setup:static-content:deploy.
L'esecuzione di magento setup:static-content:deploy causa l'errore Redis:
[Exception]
Notice: unserialize(): Error at offset 0 of 1 bytes in
/var/www/domain.com/vendor/magento/module-config/App/Config/Type/System.php on line 214
Il problema è causato da processi di interferenza paralleli sulla connessione Redis.
Per risolvere il problema, eseguire setup:static-content:deploy in modalità thread singolo impostando la seguente variabile di ambiente:
STATIC_CONTENT_THREADS =1
in alternativa, eseguire il comando setup:static-content:deploy seguito dall'argomento -j 1 (o --jobs=1 ).
La disattivazione del multithreading rallenta il processo di distribuzione delle risorse statiche.
Versioni interessate
- Adobe Commerce on-premise: 2.1.2 e successive
- Adobe Commerce su infrastruttura cloud 2.1.2 e versioni successive
- Redis, qualsiasi versione
Problema
L'esecuzione del comando setup:static-content:deploy causa l'errore Redis:
)
[2017-06-02 19:57:59] Command:php ./bin/magento setup:static-content:deploy --jobs=3 en_US
[Exception]
Notice: unserialize(): Error at offset 0 of 1 bytes in /app/<domain>/vendor/magento/module-config/App/Config/Type/System.php
on line 214
.....
[CredisException]
read error on connection
[RedisException]
read error on connection
.....
[Exception]
Notice: unserialize(): Error at offset 0 of 1 bytes in /app/<domain>/vendor/magento/module-config/App/Config/Type/System.php
on line 214
.....
[RuntimeException]
Command php ./bin/magento setup:static-content:deploy --jobs=3 en_US returned code 3
Causa
Il problema è causato da processi di interferenza paralleli sulla connessione Redis.
In questo caso, un processo in App/Config/Type/System.php stava aspettando una risposta per system_defaultweb, ma ha ricevuto una risposta per system_cache_exists che è stata eseguita da un processo diverso. Vedi la spiegazione dettagliata nel post di Jason Woods.
Soluzione
Disattivare il parallelismo ed eseguire setup:static-content:deploy in modalità thread singolo impostando la seguente variabile di ambiente:
STATIC_CONTENT_THREADS =1
È inoltre possibile eseguire il comando setup:static-content:deploy seguito dall'argomento -j 1 (o --jobs=1).
Ulteriori informazioni
Nella documentazione per gli sviluppatori: