когда лучше использовать multi_accept on
VovansystemS
vovansystems на gmail.com
Чт Май 26 18:48:11 UTC 2016
Добрый вечер,
подскажите пожалуйста, в каких случаях нужно включать multi_accept on
и как именно он работает?
документацию читал http://nginx.org/r/multi_accept/ru
из того, что мне удалось нагуглить, ничто не проясняет ситуацию для меня:
http://mailman.nginx.org/pipermail/nginx-ru/2009-October/028973.html :
При "multi_accept on" nginx пытается accept()нуть все соединения при
получении сообщения о новых соединениях
http://mailman.nginx.org/pipermail/nginx-ru/2015-May/056041.html :
С multi_accept не пересекается никак - в зависимости от workload'а
и желаемых результатов может иметь или не иметь смысл включать
multi_accept. Проблема всё та же: multi_accept позволяет принять
сразу несколько соединений за одну итерацию event loop'а, но ценой
одного лишнего вызова accept(). Есть небольшой положительный
эффект - при использовании reuseport из-за multi_accept'а не будут
возникать перекосы в распределении соединений между рабочими
процессами при microbenchmark'ах.
http://mailman.nginx.org/pipermail/nginx-ru/2014-June/054012.html :
По умолчанию nginx старается работать так, чтобы "пробуждалось"
минимальное количество рабочих процессов - это позволяет экономить
затраты на переключение контекстов и "лишние" пробуждения
процессов. При реальной работе - в результате используется
столько процессов, сколько на самом деле нужно для обработки той
нагрузки, которая есть.
Если хочется получить более ровное распределение в тестах - то
имеет смысл:
- accept_mutex выключить;
- multi_accept, если вдруг включён, выключить;
- убедиться, что тесты не используют постоянные соединения и/или
количество устанавливаемых соединений так или иначе велико.
Я не понимаю что мы выигрываем от принятия сразу нескольких
соединений за одну итерацию event loop'а.
Валентин, может быть Вы сможете проиллюстрировать ситуацию со
включенным и отключенным multi_accept на примере с бомжами и мусорными
баками?
https://habrahabr.ru/post/188114/#comment_6549442
Подробная информация о списке рассылки nginx-ru