<div dir="ltr"><div>привет,</div><div><br></div><div>предыстория. видим ошибку в логах. вспоминаем концепцию, что с уровнем error логируются ошибки на стороне сервера. считаем, что ошибка действительно была. идем к клиенту - у клиента статус 200, ему хорошо, все, что он хотел считать, он вычитал. повторяем несколько раз, в большинстве случаев ситуация повторяется, в логах ошибка, у клиента все хорошо.</div><div><br></div><div>ок. идем смотреть исходники</div><div><br></div><div>вывод сообщения об ошибке встречается три раза</div><div><br></div><div>./nginx-1.17.4/src/http/ngx_http_upstream.c:                          "upstream prematurely closed connection");<br>./nginx-1.17.4/src/http/ngx_http_upstream.c:                                  "upstream prematurely closed connection");<br>./nginx-1.17.4/src/http/ngx_http_upstream.c:                              "upstream prematurely closed connection");</div><div><br></div><div>в двух случаях запрос завершается статусом 502</div><div><br></div><div>ngx_http_upstream_finalize_request(r, u, NGX_HTTP_BAD_GATEWAY);</div><div><br></div><div><br></div><div>в одном месте - не завершается: <a href="http://hg.nginx.org/nginx/file/tip/src/http/ngx_http_upstream.c#l2369">http://hg.nginx.org/nginx/file/tip/src/http/ngx_http_upstream.c#l2369</a></div><div><br></div><div>собственно, recv в некоторых случаях может выдавать 0 и это не всегда ошибка (у нас CentOS 7, возможно, там какая-то своя магия еще, с какими-нибудь сетевыми штуками бекпортированными в ядро 3.10)<br></div><div><br></div><div>man recv</div><div>...</div><div>"The value 0 may also be returned if the requested number of bytes to receive from a stream socket was 0."</div><div><br></div><div>собственно, в этом месте меняем текст. и, чудо, после этого залогированные "upstream prematurely closed connection" идеально кореллируют с реальными обрывами.</div><div><br></div><div>вопрос - в этом месте действительно стоит логировать ошибку с таким текстом ? может поменять уровень на info (или debug), а текст сделать что-то типа "zero bytes read from recv" ?</div><div><br></div><div>Илья Шипицин<br></div><div><br></div></div>