Redis のシリアル化解除エラー setupdeploy
Adobe Commerceでは、並列プロセスが静的コンテンツのデプロイメント中に Redis 接続に干渉すると、setup:static-content:deploy コマンドを実行すると Redis のシリアル化解除エラーがトリガーされます。 この問題は、デプロイメントを中断し、シリアル化解除および Redis 接続エラーを返します。 この問題を修正するには、静的コンテンツのデプロイメントをシングルスレッドモードで実行して、Redis の並列アクセスの競合を防ぎます。
説明 description
影響を受けるバージョン
- Adobe Commerce オンプレミス:2.1.2 以降
- クラウドインフラストラクチャー 2.1.2 以降でのAdobe Commerce
- 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_cache_exists に対する応答を想定していました。 詳しくは Jason Woods' post を参照してください。
解決策 resolution
次の環境変数を設定して、並列処理を無効にし、シングルスレッドモードで setup:static-content:deploy を実行します。
STATIC_CONTENT_THREADS=1
setup:static-content:deploy コマンドの後に -j 1 (または --jobs=1)引数を指定して実行することもできます。
メモ:シングルスレッドモードでは、静的コンテンツのデプロイメントプロセスに 4 倍の時間がかかる場合があります。
3d58f420-19b5-47a0-a122-5c9dab55ec7f