<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">пн, 3 сент. 2018 г. в 16:11, Maxim Dounin <<a href="mailto:mdounin@mdounin.ru">mdounin@mdounin.ru</a>>:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello!<br>
<br>
On Sun, Sep 02, 2018 at 11:12:31PM +0500, Илья Шипицин wrote:<br>
<br>
> привет!<br>
> <br>
> есть такое наблюдение. если проксировать на апстрим БЕЗ киэлайв, то на<br>
> стороне nginx удивительным образом все хорошо (потому что соединение<br>
> закрывается по инициативе бекенда)<br>
> <br>
> если проксировать с включенным кипэлайвом, то в случаях, когда соединение<br>
> закрывается по инициативе nginx, на стороне nginx порт уходит в<br>
> TIME_WAIT.<br>
> <br>
> с одной стороны - несмертельно. все с этим живут.<br>
> с другой стороны - например, в случае, когда запрос последний (100-й при<br>
> дефолтном значении keepalive_requests), можно ведь явно добавить<br>
> "Connection: Close" ? тем самым помочь бекенду закрыть соединение, и<br>
> сэкономить один порт на nginx ?<br>
<br>
Теоретически - можно.<br>
<br>
Практически - формирование запроса на бэкенд происходит до того, <br>
как бэкенд выбран и/или установлено или извлечено из кэша <br>
соединение, которое будет использоваться для отправки запроса. <br>
Кроме того, один и тот же запрос может быть отправлен на несколько <br>
разных бэкендов и/или в несколько разных соединений.<br>
<br>
Соответственно выставление "Connection: close" по достижении <br>
keepalive_requests для конкретного соединения к бэкенду - <br>
потребует достаточно серьёзных переделок в логике работы с <br>
бэкендами. Не говоря уже о том, что сейчас при использовании <br>
keepalive-соединений заголовок Connection выставляется из конфига <br>
через proxy_set_header, и это тоже понадобится переделывать.<br></blockquote><div><br></div><div>да, я про эту магию и говорил. в некоторых случаях можно сделать более умно<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Так что если порты очень жмут - то проще поднять <br></blockquote><div><br></div><div>не жмут. мы научились с этим жить.</div><div>просто в процессе исследований пришла мысль, про которую я и написал.</div><div>было бы круто в какие-нибудь планы разработки ее включить<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
keepalive_requests. Или выставить на бэкенде аналогичное <br></blockquote><div><br></div><div>на бекенде iis, там нет такой крутилки<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
ограничение в значение, которое бы было такое же или меньше, чему <br>
у nginx'а, и тогда бэкенд будет закрывать соединение сам. <br>
Собственно, текущее значение по умолчанию keepalive_requests к <br></blockquote><div><br></div><div>поднимать keepalive_requests в потолок - была такая ошибка.</div><div>мы налетели на примерно такой сценарий</div><div><br></div><div>по умолчанию keepalive_requests равен 100. и ... при релоаде старые воркеры довольно быстро завершаются.</div><div>подняли до 4 миллиардов, и на каждый релоад получили плюсом еще 40 воркеров. и потом память закончилась</div><div><br></div><div>keepalive_requests - это ОЧЕНЬ удобный способ завершать http- воркеры :))<br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
клиентам совпадает с keepalive_requests к бэкендам, так что если в <br>
роли бэкенда тоже nginx - то при настройках по умолчанию он будет <br>
закрывать соединение сам.<br>
<br>
-- <br>
Maxim Dounin<br>
<a href="http://mdounin.ru/" rel="noreferrer" target="_blank">http://mdounin.ru/</a><br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></blockquote></div></div>