web-dev-qa-db-ja.com

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

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

  • 違いはなんですか?
    ワニスはWebサーバーの背後にあり、Webページをキャッシュしているため、コードを変更する必要はなく、設定だけが必要です。
    反対側では、Memcachedは汎用キャッシングシステムであり、主にデータベースからの結果をキャッシュするために使用され、getメソッドの変更が必要です(最初のキャッシュルックアップ)。

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

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

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

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

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

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

267
Jeff Ferland

私の経験は、ワニスをDrupalで使用することから来ています。できるだけ簡単な言葉で、私が答える方法は次のとおりです。

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

両方を使用します。

32
Joe Hyde