6

私のセットアップ:

  • 4つのWebサーバー
  • 静的コンテンツサーバー(NFSマウント)
  • 2データベースサーバー
  • 2つの「魔法をかける」サーバー
  • 多目的に指定された追加の8台のマシン。

ファイルシステム、Memcached、APCの3つのキャッシュメカニズムのラッパーを作成して、ある程度正規化された方法で使用できるようにします。使用例(および各キャッシュに実際に何を入れるか)を考え出そうとしています。

ファイルシステム

生成して静的に提供するコンテンツを処理します。RSSフィード、古いレポートデータ、ユーザー固有のページなど...これはすべて静的サーバーにキャッシュされます。

Memcached

PHPセッションデータ、MySQLクエリ結果、通常はシステム全体で利用可能である必要があるもの。サーバープールに含めることができる8台のマシンがあります。

APC

何も思いつきません。2つの「domagic」サーバーは分散システムの一部ではないため、クエリ結果をAPCにキャッシュし、そこから機能する可能性があります。それを過ぎて、私は何も考えることができません。

クエリキャッシング

SQLの使用の性質を考えると、クエリキャッシングはパフォーマンスを低下させます。これを無効にしました。

一般的に、どのような種類のデータをどこに保存する必要がありますか?この設定は意味がありますか?

分散システムでAPCデータキャッシュを使用することはありますか(私には考えられません)?

物事をより簡単またはより効率的にするために私が見逃しているものはありますか?

編集:ついに、パスカルが言っていることを理解しました。設定の一部だけをAPCに移動し、残りのファイルをディスクからロードすることに頭を悩ませていました。他に何か提案はありますか?

4

1 に答える 1

3

一部のプロジェクトでは、同じ種類のキャッシングメカニズムを使用しています。キャッシュシステムとしてAPC+memcachedを使用しています。

データのキャッシュに関しては、APCとmemcachedの主な違いは2つまたは3つあります。

  • APCアクセスは、ローカルのみであるため、つまりネットワークが関与していないため、少し高速です(memcachedよりも5倍高速です) 。
  • APCを使用すると、キャッシュが各サーバーに複製されます。memcachedを使用すると、サーバー間で重複が発生しません
    • whicは、memcachedがすべてのサーバーに同じバージョンのデータがあることを保証することを意味します。APCに保存されるデータは、サーバーごとに異なる場合があります。


私たちは一般的に使用します:

  • 非常に頻繁にアクセスする必要があり、生成が迅速で、次のようなデータのAPC
    • どちらも頻繁に変更されません
    • または、すべてのサーバーで同一でなくてもかまいません
  • 生成に時間がかかるデータや使用頻度の低いデータの場合はmemcached。
    • または、変更をすぐに表示する必要があるデータの場合(つまり、DBへの書き込みがある場合、キャッシュされたエントリも再生成されます)

たとえば、次のことができます。

  • APCを使用して構成変数を保存します。
    • 頻繁に変更しないでください
    • 非常に頻繁にアクセスされます
    • 小さいです
  • 記事のコンテンツにはmemcachedを使用します(たとえば、CMSアプリケーションの場合)
    • それほど小さくはなく、それらはたくさんあります。つまり、1台のサーバーだけで使用するよりも多くのメモリが必要になる可能性があります。
    • 生成するのはかなり難しい/重い


いくつかの補足:

  • 複数のサーバーがNFSを介して共有されている同じファイルに書き込もうとすると、NFSにロックメカニズムがないため、問題が発生する可能性があります(私が覚えている限り)
  • APCはデータのキャッシュに使用できますが、それを使用する最も重要な理由は、オペコードキャッシュ機能です(PHPサーバーで大量のCPUを節約できます)
  • memcachedのエントリのサイズには制限があります。1Mを超えるエントリを保存することはできません(この問題が発生することはめったにありませんが、発生した場合は適切ではありません^^)
于 2010-02-28T23:53:34.617 に答える