Задать вопрос
MrLinch
@MrLinch
Just like coding...

Как оптимизировать сервер под 5 миллионов хитов?

Добрый день!

Есть некий проект написанный на Python с использованием Django. Сервис не имеет какой либо особой логики, суть довольно проста: при переходе на соответствующий URL, мы записываем кое-какие данный в сессию и статистику в БД, и редиректим на другой URL.
В качестве БД используется PostgreSQL, сессий хранятся в Redis.
Сервер довольно мощный 4 ядра (8 потоков), 8 ОЗУ.
При тестах в логах Nginx стали появляться сообщения типа:
(11: Resource temporarily unavailable)

Видно что нагрузка на сервер была довольно маленькой, около 5-6% на ядро.
Соответственно вопрос как это все оптимизировать под такие нагрузки?
  • Вопрос задан
  • 1193 просмотра
Подписаться 10 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 3
dohlik
@dohlik
Проблема в том, что рано или поздно Вы все равно упретесь в невозможность увеличивать количество воркеров. Разделите непосредственно сбор статистики и сохранение ее в относительно медленной БД. То есть переход по УРЛу делает только быструю работу (увеличить счетчик в условном редисе/мемкеше, записать что-то в сессию) и освобождает воркер для обслуживания следующего запроса, а сохранение в базу делают отдельные воркеры с некоторой периодичностью.

Можно посмотреть в сторону связки Nginx+Lua, их возможностей может хватить для "быстрой" части.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Возможно основная проблема кроется в параллельных потоках. По достижению ограничения сервер выдаёт такое сообщение. Проверьте и увеличьте это значение в файлах конфигурации.
Ответ написан
Комментировать
sim3x
@sim3x
Тюнить колличество процессов в uwsgi
processes=128

Тюнить ядро
serverfault.com/questions/398972/need-to-increase-...

ИМО ОЗУ маловато
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы