Прежде всего, я никоим образом не недовольны работой моего сайта, работающего на Django, и не получал массового трафика, чуть более 1000 посещений в день.Выполнение параллелизма в Django (apache2 prefork/mod_wsgi), что я делаю неправильно?
Мне было любопытно, насколько хорошо он справится с большими пиками трафика, поэтому я использовал инструмент ab-tool для проведения бенчмаркинга.
Я заметил, что производительность, когда параллелизм больше 1, обеспечивает тот же самый объем запроса, что и одно одновременное соединение.
Не следует ли увеличить количество повторов/сек с параллелизмом?
Im на виртуальной машине с 1 ГБ ОЗУ, apache2 (prefork), mod_wsgi, memcached и mysql.
Все содержимое на странице было кешировано, база данных не принимает никаких обращений. И если memcached отбросит запись, будет только 2 запросов (проиндексированных) - и их следует немедленно перезаписать.
Бенчмаркинг данные: (примечание: я сделал Benchmark его с 2000 года и 10к запросов с теми же результатами)
За начальную страницу, служил через apache2/mod_wsgi Джанго:
-n100 С4: http://dpaste.com/97999/ (58,2 Reqs/с)
-n100 -c1: http://dpaste.com/97998/ (57,7 Reqs/с)
Для robots.txt, непосредственно из apache2:
-n100 С4: http://dpaste.com/97992/ (4917 Reqs/с)
-n100 -c1: http://dpaste.com/97991/ (1412 Reqs/с)
Это мой апач конф: http://dpaste.com/97995/
Edit: Добавлена дополнительная информация
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()
Вы не указали, скомпилирован ли Apache с помощью предпродажного или рабочего MPM. Вы не предоставляете конфигурацию, которую используете, чтобы ваше приложение размещалось mod_wsgi, поэтому не знайте, используете ли вы режим встроенного режима или демон. Использование 100 запросов для образца сравнения также не приведет к хорошим результатам, обычно вы хотели бы использовать тысячи. Также не можете определить, были ли вы уверены, что вы устранили задержки запуска. Apache/mod_wsgi будет лениво загружать веб-приложение Python. Также нет указания, если ваш запрос противоречит базе данных и является ли это проблемой. Необходима дополнительная информация. –
Добавлена дополнительная информация. Я сравнивал его с запросами 2000 и 10 тыс. С теми же результатами. Запрос вообще не попадает в базу данных, я убедился, что все кэшировано (memcached), а top сообщает мне только о процессах Apache, которые используют (все) ресурсы. – schmilblick
О, и у меня на самом деле была «предка» в заголовке, так что информация была предоставлена. Добавлено его текст для ясности. – schmilblick