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: