Re: Почему нагружается только 1 worker?

Илья Шипицин chipitsine at gmail.com
Tue Jun 3 03:19:16 UTC 2014


Максим, насчет keepalive, наверное, мысль была в том, чтобы в тесте
воссоздать нечто, максимально похожее на боевые условия.
ни текущая ситуация (когда, вероятно, все запросы идут в рамках одного
конекта), ни то, что вы предложили ("убедиться, что тесты не
используют постоянные соединения") на боевые условия не похожи.

у нас как-то была задача посчитать, сколько в боевых условиях в
среднем проходит запросов в рамках одного keepalive-соединения.
красивого и понятного решения не нашли. придумали логировать исходящий
tcp-порт на клиенте (и верить, что это признак keepalive).

не подскажете, какие есть еще варианты ?

2 июня 2014 г., 21:40 пользователь Maxim Dounin <mdounin at mdounin.ru> написал:
> Hello!
>
> On Mon, Jun 02, 2014 at 03:32:06AM -0400, Brazzford wrote:
>
>> Здравствуйте! У меня VPS с одно ядерным процессором. В конфиге Nginx
>> поставлено 2 worker'а. Когда я делаю тест с помощью AB, вижу,  что всю
>> нагрузку принимает либо первый либо второй worker. Именно поэтому
>> рекомендуют запускать количество worker'ов равных числу ядер? Потому что
>> остальные задействованы не будут? А почему два worker'a не могут
>> распределить нагрузку между собой, работая на одном ядре процессора? Я знаю,
>> что одно ядро, в одно и тоже время может выполнять только один процесс, но
>> ведь существует переключатель процессов, который с одного процесса
>> переключается на другой... и я не могу понять почему у меня нагружается
>> только один worker. Помогите пожалуйста понять суть дела.
>
> По умолчанию nginx старается работать так, чтобы "пробуждалось"
> минимальное количество рабочих процессов - это позволяет экономить
> затраты на переключение контекстов и "лишние" пробуждения
> процессов.  При реальной работе - в результате используется
> столько процессов, сколько на самом деле нужно для обработки той
> нагрузки, которая есть.
>
> Если хочется получить более ровное распределение в тестах - то
> имеет смысл:
>
> - accept_mutex выключить;
> - multi_accept, если вдруг включён, выключить;
> - убедиться, что тесты не используют постоянные соединения и/или
>   количество устанавливаемых соединений так или иначе велико.
>
> Ссылки:
>
> http://nginx.org/r/accept_mutex/ru
> http://nginx.org/r/multi_accept/ru
>
> --
> Maxim Dounin
> http://nginx.org/
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru


Подробная информация о списке рассылки nginx-ru