Redis未序列化错误setup:static-content:deploy

本文修复了在运行magento setup:static-content:deploy时出现Redis未序列化错误的问题。

运行magento setup:static-content:deploy导致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

该问题是由于Redis连接上的并行干扰进程造成的。

要解决此问题,请通过设置以下环境变量,在单线程模式下运行setup:static-content:deploy

STATIC_CONTENT_THREADS =1

或者,运行setup:static-content:deploy命令,后跟-j 1 (或--jobs=1 )参数。

请注意,禁用多线程会减慢部署静态资产的过程。

受影响的版本

  • Adobe Commerce内部部署:2.1.2及更高版本
  • 云基础架构上的Adobe Commerce 2.1.2及更高版本
  • Redis,任何版本

问题

运行setup:static-content:deploy命令导致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

原因

问题是由于Redis连接上的并行干扰进程造成的。

此处,App/Config/Type/System.php中的进程需要对system_defaultweb的响应,但收到了其他进程对system_cache_exists的响应。 查看Jason Woods帖子中的详细说明。

解决方案

通过设置以下环境变量,禁用并行度并在单线程模式下运行setup:static-content:deploy

STATIC_CONTENT_THREADS =1

也可以运行setup:static-content:deploy命令,后跟-j 1 (或--jobs=1)参数。

NOTE
在单线程模式下,静态内容部署过程可能需要四倍于此的时间。

更多信息

在我们的开发人员文档中:

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a