3層のWebアーキテクチャを高速化するためのMemcache(d)とVarnish


111

ベンチマーク(3層のWebアーキテクチャ)を高速化しようとしています。Memcache(d)とVarnishに関連する一般的な質問があります。

  • 違いはなんですか?
    ように私には思えるワニスは、Webサーバの背後にあるWebページをキャッシュし、コードの変更、ちょうど設定は必要ありません。
    一方、Memcachedは汎用のキャッシュシステムであり、主にデータベースからの結果をキャッシュするために使用され、getメソッドの変更が必要です(最初のキャッシュルックアップ)。

  • 両方使用できますか?フロントWebサーバーにニスを塗って、データベースキャッシュにMemcachedを使用しますか?

  • より良いオプションは何ですか?

    (シナリオ1-主に書き込み、
    シナリオ2-主に読み取り、
    シナリオ3-読み取りと書き込みは類似しています)

回答:


269
  • VarnishはWebサーバーの前にいます。キャッシュする逆httpプロキシとして機能します。
  • 両方使用できます。
  • 主に書き込み-Varnishは影響を受けるページを削除する必要があります。これによりオーバーヘッドが発生し、変更されたページにはほとんどメリットがありません。
  • ほとんど読む-Varnishはおそらくそのほとんどをカバーするだろう。
  • 同様の読み書き-Varnishは多くのページを提供し、Memcacheは既知のデータと新しいデータが混在するページの情報を提供して、ページをより速く生成できるようにします。

stackoverflow.comに当てはまる例:このコメントを追加するとページキャッシュが無効になるため、このページをVarnish(およびおそらく最初からキャッシュする価値のない私のプロファイルページ)からクリアする必要があります。すべて無効にすることを忘れないでください影響を受けるページは少し問題になることがあります)。ただし、すべてのコメントはまだMemcacheにあるため、データベースはこのコメントを書き込むだけで済みます。ページを生成するためにデータベースで他に何もする必要はありません。すべてのコメントはMemcacheによってプルされ、誰かが再び影響を与えるまで(おそらく私の回答に投票して)、ページは再キャッシュされます。繰り返しになりますが、データベースは投票を書き込み、他のすべてのデータはMemcacheからプルされ、寿命は速くなります。

Memcacheは多くの読み取り作業を行うことからDBを節約し、Varnishはページを生成する頻度を下げることで動的WebサーバーをCPU負荷から節約します(Memcacheでない場合はdbの負荷も少し軽減します)。


3
これ:「(おそらく私の回答を投票して)」私はあなたの回答に投票しました
Cesc

そのため、ワニスを使用することは、stackoverflowなどのサイト(またはFacebookなどのアクティビティフィードページがあるサイト)には推奨されません。それは...ですか?
Mohammad Reza Esmaeilzadeh 2016

@jbferlandあなたの例での私の質問は、このページの上部に私が受け取ったポイントの数を含む私の写真があるということです。
Hossj 16

ESIタグを使用した@Hossj。
Johny Pie

VarnishはWebサーバーの前にある場合がありますが、Webサーバーの後ろにある場合もあります。同じWebサーバーの前と後ろに同時に配置することもできます;-)たとえば、VarnishはSSLをサポートしていないため、WebサーバーをVarnishの前に配置してHTTPSを処理することも珍しくありません。トラフィックはVarnishにプロキシされ、アプリケーションWebサーバーと通信します。これはHTTPSトラフィックを処理するサーバーと同じサーバーである場合があります。
2016年

32

私の経験は、DrupalでVarnishを使用することから来ています。できるだけ簡単に言えば、ここに私が答える方法があります:

一般に、Varnishは認証されていない(Cookieを介した)トラフィックに対して機能し、memcachedは認証されたトラフィックをキャッシュします。

したがって、両方を使用してください。


5
あなたはそれを釘付けにしたのですが、私はVarnishが匿名ユーザーのキャッシュにうまく機能すると思います...
Allan Jikamu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.