2009-05-06 4 views
4

DBとしてPostgreSQL 8.3を使用して、Djangoで稼働しているWebサイトはかなり小さい(1日に約4.5kページビュー)Webサイトを持っています。Djangoキャッシュのパフォーマンスを測定する方法は?

私はキャッシュとセッションの両方のバックエンドとしてデータベースを使用しています。私はこの目的のためにMemcachedを使うことについてたくさんの良いことを聞いてきました。私は確かに試してみたいと思います。しかし、私はそのような変更のメリットを正確に知りたいと思っています。私のサイトは、より良いキャッシュバックエンドが差をつけるほど十分でないかもしれないと想像しています。要点は、memcachedをインストールして設定するのは私のものではなく、誰かの時間を無駄にしたり、ほとんど無駄にしたくないということです。

キャッシュバックエンドとしてdbを使用することによって導入されたオーバーヘッドを測定するにはどうすればよいですか?私はdjango-debug-toolbarを見てきましたが、私が正しく理解しているのであれば、プロダクションサイトに入れたいものではありません(そのためにはDEBUG=Trueを設定する必要があります)。残念ながら、私は私のラップトップ(私は別のOS、CPUとはるかに多くのRAMがある)で生産設定を再現することはできません。

誰かが異なるDjangoキャッシュ/セッションバックエンドをベンチマークしましたか?誰かが、私がやっていたら何がパフォーマンスの違いになるかを知っていますか?

答えて

5

以前の私の研究では、私たちが開発していたサイトへのキャッシュの影響を測定しようとしました。同じマシンでは、開始ページ(オブジェクトリスト)として最も一般的に使用される10ページのセットと、〜200000のプールから無作為に抽出されたオブジェクトの詳細ページをロードテストしました。その違いは毎秒150要求/秒〜30000要求/秒であり、データベースクエリは1ページあたり1-2に落ちました。

  • セッション
  • (各ページにあります)
  • 二のオブジェクトと共通のコンテンツオブジェクトカテゴリの
  • リストをリストオブジェクト内の個々のページのために取得したオブジェクトのリスト:キャッシュされた何

    その他プロパティを分類する

  • オブジェクトカウンタ(cronジョブでオフラインで計算)
  • 個々のオブジェクト

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

2

短い答え:enougth ramをお持ちの場合、memcachedは常に高速になります。 memcachedとデータベースのキャッシュを実際にベンチマークすることはできません。サーバの大きなボトルネックはディスクアクセス、特に書き込みアクセスです。

とにかく、キャッシュするオブジェクトがたくさんあり、有効期限が長すぎるとディスクキャッシュが優れています。しかし、このような状況では、公演をしたい場合は、ページを静的にPythonスクリプトで生成し、ligthtpdまたはnginxでそれらを配信する方が良いでしょう。

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

+0

memcacheを使用するとdbよりも高速になることがわかります。問題は、コンフィギュレーションの変更を正当化するのに十分速いかどうかです。 –

0

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

memcacheを使用しないでfirebugに表示された平均ロード結果をマークし、キャッシングをオンにして新しい結果をマークします。それはそれが言ったように簡単に行われます。

パフォーマンスは人に衝撃を与えます。パフォーマンスが非常に上がります。

2

上に保存されているどのくらいの時間を確認するために、Memcachedの、Redisの、ファイルベース、そしてdiskcache.DjangoCache。 DiskCacheの追加の利点は、(MemcachedやRedisとは異なり)別のプロセスは必要ないということです。代わりに、キャッシュキーと小さな値はDjangoプロセスメモリにメモリマップされます。キャッシュからの値の取得は、一般に、ローカルホスト上のMemcachedよりも高速です。 settingsは、メモリに保持されるデータの量を制御します。残りはディスクにページアウトされます。

関連する問題