私はJoomlaサイトを持っていますが、そのキャッシュで継続的に問題が発生しています。
これらの問題は、管理パネルに移動してキャッシュをクリアすることで解決できますが、まったく起こらないようにしたいのは明らかです。しかし、私は問題のデバッグを試みて根本的な原因を見つけるのが困難です。
症状は、サイトが一定期間正常に動作し、その後突然500エラーで空白ページを表示し始めることです。 Joomla 3.8への最近のアップグレード後、この問題はさらに悪化しているようです。
デバッグをいくつか行いましたが、実際のクラッシュはメモリ不足エラーです。正確な場所はさまざまですが、最新の例では次のようになっています。
268435456バイトの許容メモリサイズを使い果たしました(30548627バイトを割り当てようとしました).../libraries/src/Cache/Storage/FileStorage.php:195
これはFileStorage::store()
メソッド内にあり、コードのブロックをキャッシュに追加しようとします。
この時点で$data
の内容を見ると、シリアル化されていますPHPホームページ上のすべてのモジュールの多数のコピーを含むデータであり、データのサイズは十分に大きいのでそれに追従しようとすると、メモリ制限を超えてしまいます。
すべてのモジュールのインスタンスは間違いなく複数ありますが、メモリの制限に対して大きくなりすぎるまで、キャッシュ内に徐々に蓄積されていくと思います。
私が理解していない(そして私が行ったデバッグからうまくいかない)ことが、これが起こっている理由です。致命的なエラーが発生する頃には、モジュールでいっぱいのこの大きな構造が実際に構築された時点をはるかに超えており、私はこれ以上掘り下げることができるようにJoomlaの内部について深い知識を持っていません。
ここで何が起こっているのか、そしてそれを永久に解決する方法について、誰かが私にいくつかの指針を与えることができますか?
ありがとうございました。
保守的なキャッシングに切り替える プログレッシブキャッシングは避ける必要があります 。メモリの問題やファイルシステムの問題など、プログレッシブキャッシュが原因で、あらゆる種類の問題が発生します。もちろん、プログレッシブキャッシュによって引き起こされるこれらの定数ファイルの書き込みが原因で、ハードウェア障害が発生する可能性があることは言うまでもありません。
プログレッシブキャッシングを実際に使用する必要のあるJoomlaサイトはほとんどなく、実際にそれを必要とするサイトでは、最終的に別のものを使用します。プログレッシブキャッシングは十分にコード化されておらず、Joomla 3.8でははるかに悪化しています。
ちなみに、プログレッシブキャッシングの使用が原因で問題が発生しているために、メモリ制限を256 MBに設定している場合は、その数を管理可能な64 MBに減らすことをお勧めします(保守的なキャッシングに切り替えた後)。 256 MBは高すぎるため、Joomlaサイトではほとんど必要ありません。