<div dir="ltr"><div>добавил отладку.</div><div><br></div><div>в recv передается не ноль. из recv возвращается ноль.</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">вс, 13 окт. 2019 г. в 20:44, Илья Шипицин <<a href="mailto:chipitsine@gmail.com">chipitsine@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">вс, 13 окт. 2019 г. в 20:11, Evgeniy Berdnikov <<a href="mailto:bgx@protva.ru" target="_blank">bgx@protva.ru</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Sun, Oct 13, 2019 at 02:18:30PM +0500, Илья Шипицин wrote:<br>
>    в одном месте - не завершается:<br>
>    <a href="http://hg.nginx.org/nginx/file/tip/src/http/ngx_http_upstream.c#l2369" rel="noreferrer" target="_blank">http://hg.nginx.org/nginx/file/tip/src/http/ngx_http_upstream.c#l2369</a><br>
>    собственно, recv в некоторых случаях может выдавать 0 и это не всегда<br>
>    ошибка (у нас CentOS 7, возможно, там какая-то своя магия еще, с<br>
>    какими-нибудь сетевыми штуками бекпортированными в ядро 3.10)<br>
>    man recv<br>
>    ...<br>
>    "The value 0 may also be returned if the requested number of bytes to<br>
>    receive from a stream socket was 0."<br>
<br>
 Насколько я разбираюсь в английском, "requested number of bytes" -- это<br>
 значение аргумента len, т.е. ситуация, когда в recv() передают длину<br>
 буфера равную нулю, т.е. из сокета запрашивается чтение нуля байт.<br>
 Nginx действительно так делает?<br></blockquote><div><br></div>я не добавлял в это место логирование. не могу наверняка сказать.</div><div class="gmail_quote">у нас выключена настройка "proxy_buffering off;" и еще в каких-то моментах конфиг отличается от дефолтного.</div><div class="gmail_quote"><br></div><div class="gmail_quote">возможно, что при некоторой комбинации параметров может передаваться 0 в recv (я попробую в это место отладку добавить),</div><div class="gmail_quote">возможно, что 0 возращается по каким-то другим причинам, связанным с особенностью recv под centos<br></div><div class="gmail_quote"><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
>    собственно, в этом месте меняем текст. и, чудо, после этого залогированные<br>
>    "upstream prematurely closed connection" идеально кореллируют с реальными<br>
>    обрывами.<br>
<br>
 Что на что меняем? diff покажите.<br></blockquote><div><br></div><div>вроде бы это не должно иметь значения.</div><div>у меня три места, где генерируется "upstream prematurely closed connection". одно из этих мест я меняю на что-то отличное, чтобы в логе понять,</div><div>где срабатывает ошибка. допустим, меняю на "xyz"<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
-- <br>
 Eugene Berdnikov<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>
</blockquote></div>