まず第一に、Django を利用したサイトのパフォーマンスに不満はありません。大量のトラフィックが得られず、これまでのところ 1 日あたり 1000 回を少し超える訪問数です。
大量のトラフィックのピークにどれだけうまく対処できるか興味があったので、ab-tool を使用してベンチマークを行いました。
同時実行数が 1 より大きい場合のパフォーマンスは、1 つの同時接続と同じ量の要求を配信することに気付きました。
要求/秒は同時実行で増加するべきではありませんか?
1 GB の RAM、apache2 (prefork)、mod_wsgi、memcached、および mysql を備えた仮想マシン上にいます。
ページのすべてのコンテンツがキャッシュされ、データベースはヒットしません。また、memcached がエントリを削除した場合、軽い (インデックス付きの) クエリは 2 つしかないため、すぐに再キャッシュする必要があります。
ベンチマーク データ: (注: 2000 および 10k のリクエストでベンチマークを行ったが、結果は同じであった)
開始ページについては、django によって apache2/mod_wsgi を介して提供されます:
-n100 -c4: http://dpaste.com/97999/ (58.2 reqs/s)
-n100 -c1: http://dpaste.com/97998/ (57.7要求/秒)
robots.txt の場合、apache2 から直接:
-n100 -c4: http://dpaste.com/97992/ (4917 reqs/s)
-n100 -c1: http://dpaste.com/97991/ (1412 reqs/s ) )
これは私の apache conf です: http://dpaste.com/97995/
編集:より多くの情報を追加しました
wsgi.conf: http://dpaste.com/98461/
mysite.conf: http://dpaste.com/98462/
私の wsgi ハンドラ:
import os, sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()