Стресс-тестирование приложения Django - как повысить пропускную способность?
У меня первая попытка стресс-тестирования простого веб-приложения django, работающего на gunicorn и nginx, которое я поместил на небольшой 256-мегабайтный сервер Rackspace Cloud.
Используя httperf, я увеличиваю количество соединений в секунду, пока не начну получать ошибки, например
httperf --hog --server=localhost --uri=/myapp --timeout=10 --num-conns=2500 --rate=25
Я обнаружил, что для простой почти статической страницы от django я могу получить около 35 запросов в секунду, прежде чем начнут появляться ошибки.
Для более динамичной страницы, которая требует поиска в базе данных и некоторой дополнительной обработки, я могу получить около 25 запросов в секунду.
Первоначально я использовал только 1 рабочий-оружейник, но увеличение до 4 рабочих (я думаю, что мой облачный сервер имеет 4 ядра), казалось, не имело никакого значения (оно все еще начинает выдавать ошибки выше 25 запросов / сек).
Звучат ли эти результаты примерно так, как ожидалось, учитывая, что они работают на таком маленьком (256 МБ) сервере?
Кроме того, есть ли какие-либо изменения, которые я мог бы сделать, чтобы улучшить пропускную способность?