<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Добрый день,<div class=""><br class=""></div><div class=""><div><blockquote type="cite" class=""><div class="">On 28 Jun 2022, at 09:01, <a href="mailto:izorkin@gmail.com" class="">izorkin@gmail.com</a> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Добрый день, Роман.<br class=""><br class="">Я ещё заметил одну ошибку в работе HTTP 3 протокола.<br class="">Через очень долгое время (5-8 часов), браузер начинает отправлять запросы по HTTP 2 протоколу, вместо<br class="">HTTP 3. Собрал debug-лог, но не смог проследить с какого момента прошло переключение. Если понадобится,<br class="">то к вечеру смогу отправить вам логи.<br class=""></div></div></blockquote></div><div class=""><br class=""></div><div class="">Проблема появилась тогда, когда вы начали реконфигурацию nginx (послали SIGHUP).</div><div class="">При появлении новых воркеров ломается логика распределения квиковых соединений по воркерам.</div><div class="">В итоге, например, новый пакет может прийти в старый воркер, которым он будет проигнорирован.</div><div class=""><br class=""></div><div class="">Все бы могло относительно быстро рассосаться после череды ошибок, если бы у вас не висел один запрос с</div><div class="">проксировнием вебсокетов, который не давал завершиться старому воркеру.</div><div class="">Кроме того, похоже, у вас выключен таймаут на шатдаун воркеров.</div><div class=""><br class=""></div><div class="">Если у вас (свежий) Linux, то проблема с распределением квиковых клиентов по воркерам решается включением bpf-модуля.</div><div class="">Для этого укажите следующую директиву на верхнем уровне конфига:</div><div class=""><br class=""></div><div class=""> quic_bpf on;</div><div class=""><br class=""></div><div class="">При этом nginx должен иметь админские права (CAP_SYS_ADMIN) при запуске.</div><br class=""><div class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div>----</div><div>Roman Arutyunyan</div><div><a href="mailto:arut@nginx.com" class="">arut@nginx.com</a></div><div class=""><br class=""></div></div><br class="Apple-interchange-newline"><br class="Apple-interchange-newline">
</div>
<br class=""></div></body></html>