5

私はかなり小さい (1 日に約 4.5k ページビュー) Web サイトを Django で実行しており、PostgreSQL 8.3 をデータベースとして使用しています。

データベースをキャッシュとセッション バックエンドの両方として使用しています。この目的で Memcached を使用することについて多くの良いことを聞いたので、ぜひ試してみたいと思います。ただし、そのような変更の利点を正確に知りたいです。私のサイトは、より優れたキャッシュ バックエンドが違いを生むには十分な大きさではないのではないかと思います。要点は、memcached をインストールして構成するのは私ではないということです。また、誰かの時間を無駄にしたり、ほとんど無駄にしたりしたくありません。

データベースをキャッシュ バックエンドとして使用することによって生じるオーバーヘッドを測定するにはどうすればよいですか? 私はdjango-debug-toolbarを見てきましたが、私が正しく理解していれば、それは本番サイトに置きたいものではありません(動作するように設定する必要がありますDEBUG=True)。残念ながら、私のラップトップでは本番環境の設定を完全に再現することはできません (私は異なる OS、CPU、およびより多くの RAM を使用しています)。

誰かが別の Django キャッシュ/セッション バックエンドをベンチマークしましたか? たとえば、リクエストごとに1つのセッション書き込みを行った場合、パフォーマンスの違いはどうなるか知っていますか?

4

5 に答える 5

5

以前の仕事では、開発中のサイトでのキャッシュの影響を測定しようとしました。同じマシンで、開始ページ (オブジェクト リスト) として最も一般的に使用される 10 ページのセットと、約 200000 のプールからランダムに取得されたいくつかのオブジェクト詳細ページの負荷テストを行いました。違いは 150 リクエスト/秒から 30000 リクエスト/秒で、データベース クエリは 1 ページあたり 1 ~ 2 に減少しました。

キャッシュされたもの:

  • セッション
  • オブジェクト リストの個々のページごとに取得されたオブジェクトのリスト
  • 二次オブジェクトと共通コンテンツ (各ページにあります)
  • オブジェクト カテゴリおよびその他の分類プロパティのリスト
  • オブジェクト カウンター (cron ジョブによってオフラインで計算)
  • 個々のオブジェクト

一般に、高レベルのキャッシュ フレームワークではなく、低レベルの粒状キャッシュのみを使用しました。非常に慎重な設計が必要でした (オブジェクトの追加や変更など、データベースの状態が変化するたびにキャッシュを適切に無効にする必要がありました)。

于 2009-05-06T12:08:36.810 に答える
3

DiskCacheプロジェクトは、ローカル メモリ、Memcached、Redis、ファイル ベース、および diskcache.DjangoCache を比較する Django キャッシュ ベンチマークを公開してます。DiskCache の追加の利点は、(Memcached や Redis とは異なり) 個別のプロセスが必要ないことです。代わりに、キャッシュ キーと小さな値が Django プロセス メモリにメモリ マップされます。キャッシュからの値の取得は、通常、localhost の Memcached よりも高速です。メモリに保持されるデータの量は、多くの設定によって制御されます。残りはディスクにページアウトされます。

于 2016-03-19T03:22:06.443 に答える
2

簡単な答え:もしあなたがenougth ramを持っているなら、memcachedは常により速くなります。memcachedとデータベースキャッシュのベンチマークを実際に行うことはできません。サーバーの大きなボトルネックはディスクアクセス、特に書き込みアクセスであることに注意してください。

とにかく、キャッシュするオブジェクトが多く、有効期限が長い場合は、ディスクキャッシュの方が適しています。ただし、この状況でギグパフォーマンスが必要な場合は、Pythonスクリプトを使用して静的にページを生成し、ligthtpdまたはnginxを使用してページを配信することをお勧めします。

memcachedの場合、サーバー専用のRAMの量を調整できます。

于 2009-05-06T09:32:27.293 に答える
0

試してみてください。firebug または同様のツールを使用し、テスト サーバーで RAM を少し割り当てて (64 MB など) memcache を実行します。

memcache を使用せずに firebug で表示される平均読み込み結果をマークしてから、キャッシュをオンにして新しい結果をマークします。それはそれが言ったように簡単に行われます。

パフォーマンスが非常にうまく上がるため、結果は通常、人々に衝撃を与えます。

于 2010-01-20T22:19:04.840 に答える