4

Squid キャッシュを使用して、Web サーバーからトラフィックをオフロードしています。インバウンド要求が Web サーバーに到達する前に応答するリバース プロキシとして設定されます。

キャッシュにない同じリクエストに対する同時リクエストが殺到すると、Squid はすべてのリクエストをウェブ (「オリジン」) サーバーにプロキシします。私たちにとって、この動作は理想的ではありません。オリジン サーバーは、N 個の同一のリクエストを同時に処理しようとして行き詰まります。

代わりに、最初のリクエストをオリジン サーバーにプロキシし、残りのリクエストを Squid レイヤーでキューに入れ、オリジン サーバーが最初のリクエストに応答したときにすべて Squid によって処理されるようにします。

これを行うためにSquidを構成する方法を知っている人はいますか?

ドキュメントを何度も読み、トピックを徹底的に Web 検索しましたが、その方法がわかりません。

私たちも Akamai を使用していますが、興味深いことに、これがデフォルトの動作です。(ただし、Akamai には非常に多くのノードがあるため、Akamai のスーパーノード機能が有効になっている場合でも、特定のトラフィック スパイク シナリオではまだ多くの同時リクエストが見られます。)

この動作は、他のいくつかのキャッシュに対して明確に構成可能です。Ehcache のドキュメントでは、オプション「同時キャッシュ ミス: キャッシュ ミスにより、キャッシュ フィルターの上流でフィルター チェーンが処理されます。同じキーを要求するスレッドが無駄な重複作業を行うのを避けるために、これらのスレッドは最初のスレッドの後ろでブロックします。 "

一部の人々は、この動作を「ブロッキング キャッシュ」と呼んでいます。後続の同時リクエストは、最初のリクエストが実行されるかタイムアウトになるまでブロックされるためです。

私の初心者の質問を見てくれてありがとう!

オリバー

4

1 に答える 1

9

折りたたまれた転送を探しています: http://www.squid-cache.org/Versions/v2/2.7/cfgman/collapsed_forwarding.html

2.6 と 2.7 で利用できますが、3.x ではまだ利用できません。

キャッシュに古いものがある場合、stale-while-reavlidate にも興味があるかもしれません: http://www.mnot.net/blog/2007/12/12/stale

于 2010-04-14T05:52:48.850 に答える