Прежде всего, я никоим образом не доволен производительностью моего сайта на Django, он не получает большого трафика, чуть более 1000 посещений в день.
Мне было любопытно, насколько хорошо он справится с пиками интенсивного трафика, поэтому я использовал ab-tool для проведения некоторых тестов.
Я заметил, что производительность, когда параллелизм больше 1, обеспечивает такое же количество запросов, как и одно параллельное соединение.
Разве количество запросов не должно увеличиваться при одновременном выполнении?
Я на виртуальной машине с 1 ГБ ОЗУ, apache2 (prefork), mod_wsgi, memcached и mysql.
Весь контент на странице был закэширован, база данных не принимает никаких обращений. И если memcached удалит запись, есть только 2 легких (индексированных) запроса, и их следует немедленно повторно кэшировать.
Данные сравнительного анализа: (примечание: я сравнил его с 2000 и 10 000 запросов с теми же результатами)
Для стартовой страницы, обслуживаемой через apache2/mod_wsgi django:
-n100 -c4: http://dpaste.com/97999/ (58,2 запроса/с)
-n100 -c1: http://dpaste.com/97998/ (57,7 запросов/с)
Для robots.txt напрямую из apache2:
-n100 -c4: http://dpaste.com/97992/ (4917 запросов/с)
-n100 -c1: http://dpaste.com/97991/ (1412 запросов/с)
Это моя конфигурация Apache: 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()