Web サイトのカスタマイズ可能なフロント ページで、最近更新されたコンテンツを示すモジュールを 100 をはるかに超えるモジュールから選択して表示するオプションをユーザーに提供します。
すべてのデータは MySQL クエリによって生成され、その結果は memcached を介してキャッシュされます。現在のシステムは次のように機能します: ユーザーがモジュールを含むページをロードすると、モジュールはすぐにキャッシュからデータを提供され、クエリはキューに追加され、別のギアマン プロセスによって更新されます (ページのロードが行われるように)。 mysql クエリを待たないでください)。その後、そのクエリは 15 分ごとに 1 回実行され、キャッシュ内のデータが更新されます。最近要求されていないデータを継続的に更新しないように、クエリのキュー自体は定期的に削除されます。
問題は、何らかの理由でキャッシュが空の場合にどうするかです。これは頻繁に発生するわけではありませんが、発生した場合、ユーザーには現在空のモジュールが表示され、gearman プロセスでデータが更新されるため、少し後に同じ (または別の) ユーザーがページをリロードすると、表示するデータです。
私たちのトラフィックは、キャッシュが空のときにユーザーのためにライブでクエリを実行しようとすると、スタンピングで深刻な問題が発生するようなものです.同じ(おそらく遅い)クエリを何度も実行することになります.多くのユーザーがページをロードしました。スタンピングのリスクを冒さずに「ブランクモジュール」の問題を解決する方法はありますか?