Magento 2.2.xキャッシュが自動的に無効化


16

まず、この種の問題に関する情報をウェブ上で見つけることができませんでした。

gitを統合した本番環境があります。変更はgit(git pull)を介してのみプルします。

問題は、何らかの理由でMagentoのキャッシュが自動的に無効になることです(cache:statusを確認するときにすべてゼロ)。プログラマーがこれを逃した場合、キャッシュなしでMagentoへの高トラフィック「バッシング」が原因でサーバーの過負荷がさらに発生すると、問題が発生します。

多分あなたの何人かは以前にこの問題を見たことがありますか?正確にいつ、どのように発生するかはわかりません。
そして、それはちょっとランダムに表示されます。

私たちが行う通常の手順:

  • メンテナンスを可能にする
  • git pull
  • composerインストール(必要な場合)
  • モジュールはVendor_ModuleNameを有効にします(必要な場合)
  • セットアップ:アップグレード(必要な場合)
  • 静的なものをクリアする
  • 展開コマンド
  • キャッシュをクリアする
  • opcacheのクリア
  • メンテナンスを無効にする

この種の問題の解決に役立つ貴重な提案をいただければ幸いです。


実行すると、setup:upgradeキャッシュが自動的に無効になります
u

@AmitBera私はあなたに同意しなければなりません、私がこのカンマを中断したとしても、それはキャッシュをターンしません
Macas

はい。私は....テストを行うチェックscrenerio表示されます
アミットベラ

回答:


16

これは既知の問題のようです。
これは、私が取り組んでいるプロジェクトで時々発生しますが、再現する手順を見つけることができませんでした。私が言えることは、それが展開プロセス中に発生するということだけです。
特定の状況では、ファイル.regeneratevarフォルダーに書き込まれていること(セットアップのアップグレード時またはcomposerのインストール/アップグレード時)、およびsetup:di:compileキャッシュの実行時にそのファイルが存在する場合は、キャッシュが無効になり、コンパイルプロセスが完了すると再び有効になることがわかりました。
何らかの理由で、キャッシュが再度有効にならない場合があります。
迅速かつphp bin/magento cache:enable確実なアプローチを採用し、展開プロセスの最後のステップを確実にしました。SO基本的には、敷物の下に汚れを隠しました。

キャッシュを無効にするコードはここ
にありTODO: removeます。ステートメントにラップされています。


1
確認できます。発生時に敷物の下に隠す
フィリップサンダー

わかりました、私だけではないようです。通常、これはエラーが発生し、展開プロセスがクラッシュしたときに発生します。あなたの情報を見れば、これは事実です。情報をありがとう、これを答えとしてマークしてください。
Macas

誰かが解決策を手に入れましたか?
マニッシュゴ

5

興味のある方は、この問題について少しお話しできればと思います。\ Magento \ Framework \ Code \ GeneratedFiles :: cleanGeneratedFilesでは、var / .regenerateフラグが設定されており、複数のプロセス/リクエストが生成されたファイルをクリーンアップしようとした場合、同時実行性(競合状態)の問題のようです

これは、cronを有効にし、多くのcronグループがuse_separate_process設定を使用している場合に発生する可能性が高くなります。複数のプロセスが同じものをクリーンアップしようとすると、FileIteratorは次のような異なるメッセージで失敗します。FilesystemIterator::__construct(/Users/adrianmartinez/Sites/r2-project-develop-b2b/environments/2-2-develop-b2b/magento/generated/code): failed to open dir: No such file or directory.

$this->write->delete(self::REGENERATE_FLAG);フラグの存在チェックの直後にへの呼び出しを上に移動すると、問題が解決します。最初に到着したプロセスは、それ自体がファイルのクリーニングの責任があるとマークしているためです。

問題を再現する方法についてのデモビデオをここに残します:https : //youtu.be/9-X1cIIY7y8

そして、それに使用されたスクリプト:

#!/bin/bash

# \Magento\Framework\Code\GeneratedFiles has a concurrency problem
# Create regenerate flag and launch parallel commands that try to regenerate at the same time
# This is a real case, cron:run launches stand alone processes in parallel

# Created by magento composer installer upon code install or module enable/disable
touch var/.regenerate

# Launch parallel commands
# Error differs each execution, sometimes it even works
bin/magento cron:run --group=ddg_automation --bootstrap=standaloneProcessStarted=1 2>&1 &
bin/magento cron:run --group=index --bootstrap=standaloneProcessStarted=1 2>&1 &

wait
echo "All done"

解決策は見つかりましたか?
Manish Goswami

私はこの問題を再現する方法を見つけましたが、解決策を得ませんでした。 github.com/magento/magento2/issues/17634
マニッシュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.