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 倍の時間がかかる場合があります。

関連資料

開発者向けドキュメントでは、

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f