Re: Автоматическое увеличение sndbuf при EAGAIN

Ilya Evseev nginx-forum на forum.nginx.org
Вт Июн 20 14:31:52 UTC 2017


>
> В данном случае хороший ответ на этот вопрос не прослеживается,
> так как автотюнинг буферов сейчас во всех популярных операционных
> системах есть, в том числе на линуксе.
>

Автотюнинг буферов - это что именно?

Есть sysctl net.ipv4.tcp_wmem с тремя значениями:
минимально разрешенное, по умолчанию, максимально разрешенное.

Но устанавливать значение, отличное от дефолтного, всё равно должен
пользовательский
процесс через setsockopt(SO_SNDBUF), ядро его никогда не пытается менять
автоматически.

>
> И не совсем понятно, зачем пытаться изобретать свой собственный.
>

Сейчас получается два цикла отправки - внутри ядра, и когда\если ядерный
буфер переполнен, то внутри Nginx'a вокруг EAGAIN.

Когда Nginx попадает в такой цикл, резко взлетают CPU Usage и Load Average.

Если Nginx в этой ситуации просто увеличит системный буфер, чтобы ответ
поместился в него целиком, то всю работу по отправке возьмёт на себя ядро, а
Nginx сможет об этом просто забыть.

Posted at Nginx Forum: https://forum.nginx.org/read.php?21,274966,274985#msg-274985



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