From izorkin на gmail.com Sat Dec 9 18:01:32 2023 From: izorkin на gmail.com (izorkin на gmail.com) Date: Sat, 9 Dec 2023 21:01:32 +0300 Subject: =?utf-8?B?UmU6IE1pbWUtdHlwZXM6INC+0LHQvdC+0LLQu9C10L3QuNC1?= In-Reply-To: References: <9610390738.20231117100125@gmail.com> <962197451.20231118175617@gmail.com> Message-ID: <621215671.20231209210132@gmail.com> Добрый вечер, Максим. Предыдущий вариант патча уже не доступен на pastebin, в итоге обновил обновил патч и прикрепил к письму. Или куда лучше отправить патч? Вы писали 19 ноября 2023 г., 3:15:54: > Hello! > On Sat, Nov 18, 2023 at 05:56:17PM +0300, izorkin на gmail.com wrote: > Боюсь, так это не работает. Если хочется что-то добавить к > существующему списку типов в mime.types, то стоит по каждому > предлагаемому к добавлению MIME-типу расписать, что это, и зачем > это нужно в mime.types для типичного web-сайта. -- С уважением, Izorkin mailto:izorkin на gmail.com ----------- следующая часть ----------- Вложение не в текстовом формате было извлечено… Имя: mime.tipes_update.zip Тип: application/x-zip-compressed Размер: 4438 байтов Описание: отсутствует URL: From alexcool на gmail.com Sun Dec 10 08:30:11 2023 From: alexcool на gmail.com (=?UTF-8?B?0JDQu9C10LrRgdC10Lk=?=) Date: Sun, 10 Dec 2023 15:30:11 +0700 Subject: cache loader atime In-Reply-To: References: Message-ID: Здравствуйте. inactive=10m - это скорее исключение чем правило в продакшн серверах. Обычно сутки и более. atime действительно обычно отключен, вместо него обычно включен relatime. С наилучшими пожеланиями. Алексей. On Mon, Nov 13, 2023 at 4:19 AM Maxim Dounin wrote: > > Hello! > > On Sun, Nov 12, 2023 at 07:46:40AM +0700, Алексей wrote: > > > При перезагрузке nginx теряется LRU информация кэша. > > > > Возможно ли сделать так, чтобы cache loader обращал внимание на atime > > файлов и использовал эти данные для формирования LRU информации? > > Теоретически - наверное, можно попробовать такое > напрограммировать. > > На практике - во-первых, подозреваю в таком режиме проблемы с > производительностью для больших кэшей (сортировать миллионы > элементов кэша при его загрузке, чтобы получить LRU, банально > ресурсоёмко). Во-вторых, полезность atime, кажется, под большим > вопросом - даже если atime есть (в нагруженных конфигурациях его > часто просто отключают), примерно любых операций с сервером может > оказаться достаточно, чтобы все элементы кэша подлежали удалению > сразу после запуска nginx'а, скажем, при inactive=10m (по > умолчанию). > > -- > Maxim Dounin > http://mdounin.ru/ > _______________________________________________ > nginx-ru mailing list > nginx-ru на nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-ru From izorkin на gmail.com Mon Dec 11 10:01:45 2023 From: izorkin на gmail.com (izorkin на gmail.com) Date: Mon, 11 Dec 2023 13:01:45 +0300 Subject: =?windows-1251?B?bmdpbnhRdWljOiDt5SDv7uTk5fDm6OLg5ez75SDu7/bo6CBiYWNrbG9nLGRlZmVycmVkIOgg?= =?windows-1251?B?ZmFzdG9wZW4=?= Message-ID: <767484501.20231211130145@gmail.com> Добрый день. При использовании такой конфигурации: listen 0.0.0.0:443 quic reuseport fastopen=1024 backlog=1024 deferred; listen 0.0.0.0:443 ssl reuseport fastopen=1024 backlog=1024 deferred; в логах отображается ошибка: [alert] 2360#2360: setsockopt(TCP_FASTOPEN, 1024) 192.168.252.221:443 failed, ignored (92: Protocol not available) [alert] 2360#2360: setsockopt(TCP_DEFER_ACCEPT, 1) for 192.168.252.221:443 failed, ignored (92: Protocol not available) Если не ошибаюсь, то эти опции используются только для TCP протокола? Тогда может быть надо добавить эти параметры в не поддерживаемые опции, как сделано для ssl, http2, и proxy_protocol в коде http://hg.nginx.org/nginx/file/tip/src/http/ngx_http_core_module.c#l4308 Поддерживается ли backlog для QUIC? -- С уважением, Izorkin mailto:izorkin на gmail.com From pluknet на nginx.com Mon Dec 18 21:31:32 2023 From: pluknet на nginx.com (Sergey Kandaurov) Date: Tue, 19 Dec 2023 01:31:32 +0400 Subject: =?utf-8?B?UmU6IG5naW54UXVpYzog0LzQsNC60YHQuNC80LDQu9GM0L3Ri9C5?= =?utf-8?B?INGA0LDQt9C80LXRgCBNVFU=?= In-Reply-To: <139357001.20231116203951@gmail.com> References: <1866677821.20231116200612@gmail.com> <139357001.20231116203951@gmail.com> Message-ID: > On 16 Nov 2023, at 21:39, izorkin на gmail.com wrote: > > Здравствуйте, Sergey. > > Тогда, теоретически размер должен был бы достичь до 9000. > А у метода DPLPMTUD есть ограничение на размер пакетов и/или количество успешных и неудачных попыток? PMTUD сейчас реализован так: пробный размер пакета удваивается до первой ошибки или таймаута (3 неудачные попытки), затем уточняется методом двоичного поиска. Фактический размер может быть ограничен link/path mtu, системным лимитом на максимальный размер датаграммы, клиентским транспортным параметром протокола. > > Вы писали 16 ноября 2023 г., 20:24:25: > >> Это происходит автоматически посредством DPLPMTUD начиная с версии 1.25.2. > >> Изменения в nginx 1.25.2 15.08.2023 > >> *) Добавление: path MTU discovery при использовании HTTP/3. > > > -- > С уважением, > Izorkin mailto:izorkin на gmail.com > _______________________________________________ > nginx-ru mailing list > nginx-ru на nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-ru -- Sergey Kandaurov From pluknet на nginx.com Wed Dec 20 15:05:18 2023 From: pluknet на nginx.com (Sergey Kandaurov) Date: Wed, 20 Dec 2023 19:05:18 +0400 Subject: =?utf-8?B?UmU6IG5naW54UXVpYzog0L3QtSDQv9C+0LTQtNC10YDQttC40LI=?= =?utf-8?B?0LDQtdC80YvQtSDQvtC/0YbQuNC4IGJhY2tsb2csZGVmZXJyZWQg0LggZmFz?= =?utf-8?B?dG9wZW4=?= In-Reply-To: <767484501.20231211130145@gmail.com> References: <767484501.20231211130145@gmail.com> Message-ID: > On 11 Dec 2023, at 14:01, izorkin на gmail.com wrote: > > Добрый день. > При использовании такой конфигурации: > listen 0.0.0.0:443 quic reuseport fastopen=1024 backlog=1024 deferred; > listen 0.0.0.0:443 ssl reuseport fastopen=1024 backlog=1024 deferred; > в логах отображается ошибка: > [alert] 2360#2360: setsockopt(TCP_FASTOPEN, 1024) 192.168.252.221:443 failed, ignored (92: Protocol not available) > [alert] 2360#2360: setsockopt(TCP_DEFER_ACCEPT, 1) for 192.168.252.221:443 failed, ignored (92: Protocol not available) > > Если не ошибаюсь, то эти опции используются только для TCP протокола? > Тогда может быть надо добавить эти параметры в не поддерживаемые опции, > как сделано для ssl, http2, и proxy_protocol в коде > http://hg.nginx.org/nginx/file/tip/src/http/ngx_http_core_module.c#l4308 Всё так, спасибо. > Поддерживается ли backlog для QUIC? > Значение параметра backlog передаётся в вызов listen(). Для сокетов типа SOCK_DGRAM, используемых в QUIC, listen() не поддерживается и в nginx не вызывается, посему для них параметр backlog не имеет смысла. Добавил в список запрещённых параметров, см. патч. # HG changeset patch # User Sergey Kandaurov # Date 1703084664 -14400 # Wed Dec 20 19:04:24 2023 +0400 # Node ID 5bbdc197980929a82e70c9accfe3f3d3692e6071 # Parent a35f1bd4ffb651b28ef47b9b14779753071140a4 HTTP/3: added more compatibility checks for "listen ... quic". Now "fastopen", "backlog", "accept_filter", "deferred", and "so_keepalive" parameters are not allowed with "quic" in the "listen" directive. Reported by Izorkin. diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c --- a/src/http/ngx_http_core_module.c +++ b/src/http/ngx_http_core_module.c @@ -3961,7 +3961,7 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx ngx_str_t *value, size; ngx_url_t u; - ngx_uint_t n, i; + ngx_uint_t n, i, backlog; ngx_http_listen_opt_t lsopt; cscf->listen = 1; @@ -4000,6 +4000,8 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx lsopt.ipv6only = 1; #endif + backlog = 0; + for (n = 2; n < cf->args->nelts; n++) { if (ngx_strcmp(value[n].data, "default_server") == 0 @@ -4058,6 +4060,8 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx return NGX_CONF_ERROR; } + backlog = 1; + continue; } @@ -4308,6 +4312,28 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx #if (NGX_HTTP_V3) if (lsopt.quic) { +#if (NGX_HAVE_TCP_FASTOPEN) + if (lsopt.fastopen != -1) { + return "\"fastopen\" parameter is incompatible with \"quic\""; + } +#endif + + if (backlog) { + return "\"backlog\" parameter is incompatible with \"quic\""; + } + +#if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER) + if (lsopt.accept_filter) { + return "\"accept_filter\" parameter is incompatible with \"quic\""; + } +#endif + +#if (NGX_HAVE_DEFERRED_ACCEPT && defined TCP_DEFER_ACCEPT) + if (lsopt.deferred_accept) { + return "\"deferred\" parameter is incompatible with \"quic\""; + } +#endif + #if (NGX_HTTP_SSL) if (lsopt.ssl) { return "\"ssl\" parameter is incompatible with \"quic\""; @@ -4320,6 +4346,10 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx } #endif + if (lsopt.so_keepalive) { + return "\"so_keepalive\" parameter is incompatible with \"quic\""; + } + if (lsopt.proxy_protocol) { return "\"proxy_protocol\" parameter is incompatible with \"quic\""; } -- Sergey Kandaurov From izorkin на gmail.com Thu Dec 21 09:39:22 2023 From: izorkin на gmail.com (izorkin на gmail.com) Date: Thu, 21 Dec 2023 12:39:22 +0300 Subject: =?utf-8?B?UmU6IG5naW54UXVpYzog0LzQsNC60YHQuNC80LDQu9GM0L3Ri9C5INGA0LDQt9C80LXRgCBN?= =?utf-8?B?VFU=?= In-Reply-To: References: <1866677821.20231116200612@gmail.com> <139357001.20231116203951@gmail.com> Message-ID: <1553792236.20231221123922@gmail.com> Добрый день, Сергей. Проверил через Iperf по протоколу UDP? в итоге размер пакета составляет 9002. Получается ограничений со стороны ОС нет. Как можно увеличить количество попыток и игнорировать тайм-аут, и на время отключить метод двоичного поиска? Вы писали 19 декабря 2023 г., 0:31:32: > PMTUD сейчас реализован так: > пробный размер пакета удваивается до первой ошибки или таймаута > (3 неудачные попытки), затем уточняется методом двоичного поиска. > Фактический размер может быть ограничен link/path mtu, > системным лимитом на максимальный размер датаграммы, > клиентским транспортным параметром протокола. -- С уважением, Izorkin mailto:izorkin на gmail.com From pluknet на nginx.com Thu Dec 21 10:36:21 2023 From: pluknet на nginx.com (Sergey Kandaurov) Date: Thu, 21 Dec 2023 14:36:21 +0400 Subject: =?utf-8?B?UmU6IG5naW54UXVpYzog0LzQsNC60YHQuNC80LDQu9GM0L3Ri9C5?= =?utf-8?B?INGA0LDQt9C80LXRgCBNVFU=?= In-Reply-To: <1553792236.20231221123922@gmail.com> References: <1866677821.20231116200612@gmail.com> <139357001.20231116203951@gmail.com> <1553792236.20231221123922@gmail.com> Message-ID: <2B23189F-80E4-43D1-92F9-213C928D831A@nginx.com> > On 21 Dec 2023, at 13:39, izorkin на gmail.com wrote: > > Добрый день, Сергей. > > Проверил через Iperf по протоколу UDP? в итоге размер пакета > составляет 9002. Получается ограничений со стороны ОС нет. > > Как можно увеличить количество попыток и игнорировать тайм-аут, > и на время отключить метод двоичного поиска? > Причины могут быть разные, необязательно тюнинг числа попыток/таймаута может помочь. Для начала неплохо бы понимать, что происходит в сети. Для этого можно пронаблюдать процесс поиска MTU в debug log, см. строчки "probe mtu" / "ack mtu" для выбранного соединения. Клиентский лимит логгируется в "quic tp max_udp_payload_size". > Вы писали 19 декабря 2023 г., 0:31:32: > >> PMTUD сейчас реализован так: >> пробный размер пакета удваивается до первой ошибки или таймаута >> (3 неудачные попытки), затем уточняется методом двоичного поиска. > >> Фактический размер может быть ограничен link/path mtu, >> системным лимитом на максимальный размер датаграммы, >> клиентским транспортным параметром протокола. > > > -- > С уважением, > Izorkin mailto:izorkin на gmail.com > _______________________________________________ > nginx-ru mailing list > nginx-ru на nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-ru -- Sergey Kandaurov From izorkin на gmail.com Thu Dec 21 12:39:02 2023 From: izorkin на gmail.com (izorkin на gmail.com) Date: Thu, 21 Dec 2023 15:39:02 +0300 Subject: =?utf-8?B?UmU6IG5naW54UXVpYzog0LzQsNC60YHQuNC80LDQu9GM0L3Ri9C5INGA0LDQt9C80LXRgCBN?= =?utf-8?B?VFU=?= In-Reply-To: <2B23189F-80E4-43D1-92F9-213C928D831A@nginx.com> References: <1866677821.20231116200612@gmail.com> <139357001.20231116203951@gmail.com> <1553792236.20231221123922@gmail.com> <2B23189F-80E4-43D1-92F9-213C928D831A@nginx.com> Message-ID: <1285222564.20231221153902@gmail.com> Добрый день, Сергей. При запросе через браузер в логах проскакивают такие строки: 2023/12/21 14:55:02 [debug] 65503#65503: *154 quic transport parameters parsed ok 2023/12/21 14:55:02 [debug] 65503#65503: *154 quic tp disable active migration: 0 2023/12/21 14:55:02 [debug] 65503#65503: *154 quic tp idle_timeout:30000 2023/12/21 14:55:02 [debug] 65503#65503: *154 quic tp max_udp_payload_size:1472 2023/12/21 14:55:02 [debug] 65503#65503: *154 quic tp max_data:15728640 2023/12/21 14:55:03 [debug] 65503#65503: *154 quic path seq:0 send probe mtu:1472 pnum:2 tries:0 2023/12/21 14:55:05 [debug] 65503#65503: *154 quic path seq:0 ack mtu:1472 Происходит только одна попытка проверить значение MTU. Если делать запрос через curl локально с сервера: 2023/12/21 14:56:30 [debug] 65925#65925: *208 quic transport parameters parsed ok 2023/12/21 14:56:30 [debug] 65924#65924: event timer add: 3: 60000:422067499 2023/12/21 14:56:30 [debug] 65958#65958: *207 post event 00006F782E142608 2023/12/21 14:56:30 [debug] 65925#65925: *208 quic tp disable active migration: 0 2023/12/21 14:56:30 [debug] 65925#65925: *208 quic tp idle_timeout:60000 2023/12/21 14:56:30 [debug] 65924#65924: recv: fd:25 -1 of 4096 2023/12/21 14:56:30 [debug] 65958#65958: *207 quic ngx_quic_set_encryption_secrets() level:2 2023/12/21 14:56:30 [debug] 65925#65925: *208 quic tp max_udp_payload_size:65527 2023/12/21 14:56:31 [debug] 65925#65925: *208 quic path seq:0 send probe mtu:2400 pnum:1 tries:0 2023/12/21 14:56:31 [debug] 65925#65925: *208 quic path seq:0 ack mtu:2400 2023/12/21 14:56:31 [debug] 65925#65925: *208 quic path seq:0 send probe mtu:4800 pnum:45 tries:0 2023/12/21 14:56:31 [debug] 65925#65925: *208 quic path seq:0 ack mtu:4800 2023/12/21 14:56:31 [debug] 65925#65925: *208 quic path seq:0 send probe mtu:9600 pnum:74 tries:0 2023/12/21 14:56:31 [debug] 65925#65925: *208 quic path seq:0 ack mtu:9600 Получается, что через localhost работает. В настройках сетевой карты установлено значение MTU 9000, но не понятно откуда берётся значение 1472. Вы писали 21 декабря 2023 г., 13:36:21: > Причины могут быть разные, необязательно тюнинг числа попыток/таймаута > может помочь. Для начала неплохо бы понимать, что происходит в сети. > Для этого можно пронаблюдать процесс поиска MTU в debug log, > см. строчки "probe mtu" / "ack mtu" для выбранного соединения. > Клиентский лимит логгируется в "quic tp max_udp_payload_size". -- С уважением, Izorkin mailto:izorkin на gmail.com From izorkin на gmail.com Fri Dec 22 07:17:16 2023 From: izorkin на gmail.com (izorkin на gmail.com) Date: Fri, 22 Dec 2023 10:17:16 +0300 Subject: =?utf-8?B?UmU6IG5naW54UXVpYzog0LzQsNC60YHQuNC80LDQu9GM0L3Ri9C5INGA0LDQt9C80LXRgCBN?= =?utf-8?B?VFU=?= In-Reply-To: <2B23189F-80E4-43D1-92F9-213C928D831A@nginx.com> References: <1866677821.20231116200612@gmail.com> <139357001.20231116203951@gmail.com> <1553792236.20231221123922@gmail.com> <2B23189F-80E4-43D1-92F9-213C928D831A@nginx.com> Message-ID: <1727402667.20231222101716@gmail.com> Добрый день, Сергей. Удалось ещё немного поэкспериментировать. Если использовать браузер, то сперва размер probe mtu составляет 1200, а потом увеличивается до 1472. Потом проверил через curl, там средний размер пакета составляет чуть больше 1200, при скачивании файла только под конец размер пакета доходит до 2400-2500. При размере файла чуть меньше 200 кб, где-то пакетов 10 или меньше превышают 1500. Мне кажется алгоритм работает не слишком быстро. Может ли браузер Chrome ограничивать размер QUIC пакетов? Вы писали 21 декабря 2023 г., 13:36:21: > Причины могут быть разные, необязательно тюнинг числа попыток/таймаута > может помочь. Для начала неплохо бы понимать, что происходит в сети. > Для этого можно пронаблюдать процесс поиска MTU в debug log, > см. строчки "probe mtu" / "ack mtu" для выбранного соединения. > Клиентский лимит логгируется в "quic tp max_udp_payload_size". -- С уважением, Izorkin mailto:izorkin на gmail.com From pluknet на nginx.com Tue Dec 26 10:33:11 2023 From: pluknet на nginx.com (Sergey Kandaurov) Date: Tue, 26 Dec 2023 14:33:11 +0400 Subject: =?utf-8?B?UmU6IG5naW54UXVpYzog0LzQsNC60YHQuNC80LDQu9GM0L3Ri9C5?= =?utf-8?B?INGA0LDQt9C80LXRgCBNVFU=?= In-Reply-To: <1285222564.20231221153902@gmail.com> References: <1866677821.20231116200612@gmail.com> <139357001.20231116203951@gmail.com> <1553792236.20231221123922@gmail.com> <2B23189F-80E4-43D1-92F9-213C928D831A@nginx.com> <1285222564.20231221153902@gmail.com> Message-ID: <5EC90535-025B-4F23-9AF1-A0C15F134AC3@nginx.com> > On 21 Dec 2023, at 16:39, izorkin на gmail.com wrote: > > Добрый день, Сергей. > > При запросе через браузер в логах проскакивают такие строки: > 2023/12/21 14:55:02 [debug] 65503#65503: *154 quic transport parameters parsed ok > 2023/12/21 14:55:02 [debug] 65503#65503: *154 quic tp disable active migration: 0 > 2023/12/21 14:55:02 [debug] 65503#65503: *154 quic tp idle_timeout:30000 > 2023/12/21 14:55:02 [debug] 65503#65503: *154 quic tp max_udp_payload_size:1472 Собственно, причина в этом: клиент (браузер) передаёт максимальный размер содержимого датаграммы (max_udp_payload_size), который он готов принимать. Повлиять на это со стороны сервера никак нельзя. > 2023/12/21 14:55:02 [debug] 65503#65503: *154 quic tp max_data:15728640 > > 2023/12/21 14:55:03 [debug] 65503#65503: *154 quic path seq:0 send probe mtu:1472 pnum:2 tries:0 > 2023/12/21 14:55:05 [debug] 65503#65503: *154 quic path seq:0 ack mtu:1472 > > Происходит только одна попытка проверить значение MTU. И это правильно, выбор MTU соответствует ограничению сверху: min(1200 * 2, max_udp_payload_size) = 1472 > > Если делать запрос через curl локально с сервера: > 2023/12/21 14:56:30 [debug] 65925#65925: *208 quic transport parameters parsed ok > 2023/12/21 14:56:30 [debug] 65924#65924: event timer add: 3: 60000:422067499 > 2023/12/21 14:56:30 [debug] 65958#65958: *207 post event 00006F782E142608 > 2023/12/21 14:56:30 [debug] 65925#65925: *208 quic tp disable active migration: 0 > 2023/12/21 14:56:30 [debug] 65925#65925: *208 quic tp idle_timeout:60000 > 2023/12/21 14:56:30 [debug] 65924#65924: recv: fd:25 -1 of 4096 > 2023/12/21 14:56:30 [debug] 65958#65958: *207 quic ngx_quic_set_encryption_secrets() level:2 > 2023/12/21 14:56:30 [debug] 65925#65925: *208 quic tp max_udp_payload_size:65527 > > 2023/12/21 14:56:31 [debug] 65925#65925: *208 quic path seq:0 send probe mtu:2400 pnum:1 tries:0 > 2023/12/21 14:56:31 [debug] 65925#65925: *208 quic path seq:0 ack mtu:2400 > > 2023/12/21 14:56:31 [debug] 65925#65925: *208 quic path seq:0 send probe mtu:4800 pnum:45 tries:0 > 2023/12/21 14:56:31 [debug] 65925#65925: *208 quic path seq:0 ack mtu:4800 > > 2023/12/21 14:56:31 [debug] 65925#65925: *208 quic path seq:0 send probe mtu:9600 pnum:74 tries:0 > 2023/12/21 14:56:31 [debug] 65925#65925: *208 quic path seq:0 ack mtu:9600 > > Получается, что через localhost работает. > Здесь, в отличие от браузера, сurl не имеет подобных ограничений, поэтому выбор MTU удваивается до фактического ограничения сети. > В настройках сетевой карты установлено значение MTU 9000, но не понятно откуда берётся > значение 1472. > > Вы писали 21 декабря 2023 г., 13:36:21: > >> Причины могут быть разные, необязательно тюнинг числа попыток/таймаута >> может помочь. Для начала неплохо бы понимать, что происходит в сети. >> Для этого можно пронаблюдать процесс поиска MTU в debug log, >> см. строчки "probe mtu" / "ack mtu" для выбранного соединения. >> Клиентский лимит логгируется в "quic tp max_udp_payload_size". > > > -- > С уважением, > Izorkin mailto:izorkin на gmail.com > _______________________________________________ > nginx-ru mailing list > nginx-ru на nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-ru -- Sergey Kandaurov From pluknet на nginx.com Tue Dec 26 10:48:52 2023 From: pluknet на nginx.com (Sergey Kandaurov) Date: Tue, 26 Dec 2023 14:48:52 +0400 Subject: =?utf-8?B?UmU6IG5naW54UXVpYzog0LzQsNC60YHQuNC80LDQu9GM0L3Ri9C5?= =?utf-8?B?INGA0LDQt9C80LXRgCBNVFU=?= In-Reply-To: <1727402667.20231222101716@gmail.com> References: <1866677821.20231116200612@gmail.com> <139357001.20231116203951@gmail.com> <1553792236.20231221123922@gmail.com> <2B23189F-80E4-43D1-92F9-213C928D831A@nginx.com> <1727402667.20231222101716@gmail.com> Message-ID: > On 22 Dec 2023, at 11:17, izorkin на gmail.com wrote: > > Добрый день, Сергей. > > Удалось ещё немного поэкспериментировать. > Если использовать браузер, то сперва размер probe mtu составляет 1200, > а потом увеличивается до 1472. > Потом проверил через curl, там средний размер пакета составляет чуть > больше 1200, при скачивании файла только под конец размер пакета доходит > до 2400-2500. При размере файла чуть меньше 200 кб, где-то пакетов 10 > или меньше превышают 1500. Мне кажется алгоритм работает не слишком быстро. > Может ли браузер Chrome ограничивать размер QUIC пакетов? > При выборе, как часто выполнять шаги поиска MTU, важно соблюдать баланс между временем схождения и нагрузкой на сеть. Поиск MTU - это такой же трафик, поэтому текущий алгоритм старается не нагружать сеть попусту: в текущей реализации поиск имеет отложенный старт и каждый шаг поиска выполняется с задержкой, иначе это было бы особенно заметно на коротких соединениях. Поэтому, если MTU замерять сразу после установки соединения на первом запросе, это может выглядеть так, что поиск работает медленно. Но в конечном итоге алгоритм поиска сходится за разумное время, учитывая что, как правило, соединение HTTP/3 (как и HTTP/2) повторно используется для нескольких (многих) запросов. > Вы писали 21 декабря 2023 г., 13:36:21: > >> Причины могут быть разные, необязательно тюнинг числа попыток/таймаута >> может помочь. Для начала неплохо бы понимать, что происходит в сети. >> Для этого можно пронаблюдать процесс поиска MTU в debug log, >> см. строчки "probe mtu" / "ack mtu" для выбранного соединения. >> Клиентский лимит логгируется в "quic tp max_udp_payload_size". > > > -- > С уважением, > Izorkin mailto:izorkin на gmail.com > _______________________________________________ > nginx-ru mailing list > nginx-ru на nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-ru -- Sergey Kandaurov From izorkin на gmail.com Tue Dec 26 14:04:13 2023 From: izorkin на gmail.com (izorkin на gmail.com) Date: Tue, 26 Dec 2023 17:04:13 +0300 Subject: =?utf-8?B?UmU6IG5naW54UXVpYzog0LzQsNC60YHQuNC80LDQu9GM0L3Ri9C5INGA0LDQt9C80LXRgCBN?= =?utf-8?B?VFU=?= In-Reply-To: References: <1866677821.20231116200612@gmail.com> <139357001.20231116203951@gmail.com> <1553792236.20231221123922@gmail.com> <2B23189F-80E4-43D1-92F9-213C928D831A@nginx.com> <1727402667.20231222101716@gmail.com> Message-ID: <1016546954.20231226170413@gmail.com> Добрый день, Сергей. Благодарю за объяснение. Жалко, что нельзя изменить параметры MTU в браузере. Вы писали 26 декабря 2023 г., 13:48:52: > При выборе, как часто выполнять шаги поиска MTU, важно соблюдать баланс > между временем схождения и нагрузкой на сеть. Поиск MTU - это такой же > трафик, поэтому текущий алгоритм старается не нагружать сеть попусту: > в текущей реализации поиск имеет отложенный старт и каждый шаг поиска > выполняется с задержкой, иначе это было бы особенно заметно на коротких > соединениях. Поэтому, если MTU замерять сразу после установки соединения > на первом запросе, это может выглядеть так, что поиск работает медленно. > Но в конечном итоге алгоритм поиска сходится за разумное время, учитывая > что, как правило, соединение HTTP/3 (как и HTTP/2) повторно используется > для нескольких (многих) запросов. -- С уважением, Izorkin mailto:izorkin на gmail.com From izorkin на gmail.com Tue Dec 26 17:13:45 2023 From: izorkin на gmail.com (izorkin на gmail.com) Date: Tue, 26 Dec 2023 20:13:45 +0300 Subject: =?utf-8?B?UmU6IG5naW54UXVpYzog0LzQsNC60YHQuNC80LDQu9GM0L3Ri9C5INGA0LDQt9C80LXRgCBN?= =?utf-8?B?VFU=?= In-Reply-To: <5EC90535-025B-4F23-9AF1-A0C15F134AC3@nginx.com> References: <1866677821.20231116200612@gmail.com> <139357001.20231116203951@gmail.com> <1553792236.20231221123922@gmail.com> <2B23189F-80E4-43D1-92F9-213C928D831A@nginx.com> <1285222564.20231221153902@gmail.com> <5EC90535-025B-4F23-9AF1-A0C15F134AC3@nginx.com> Message-ID: <269122602.20231226201345@gmail.com> Добрый вечер, Сергей А со стороны сервере как долго сохраняется информация о MTU для текущего клиента? При новом соединении заново определяется размер? Вы писали 26 декабря 2023 г., 13:33:11: > Собственно, причина в этом: клиент (браузер) передаёт максимальный размер > содержимого датаграммы (max_udp_payload_size), который он готов принимать. > Повлиять на это со стороны сервера никак нельзя. -- С уважением, Izorkin mailto:izorkin на gmail.com From nginx на kinetiksoft.com Thu Dec 28 08:07:41 2023 From: nginx на kinetiksoft.com (=?UTF-8?B?0JjQstCw0L0=?=) Date: Thu, 28 Dec 2023 10:07:41 +0200 Subject: =?UTF-8?B?0J/RgNC+0YHRgtC+0Lkg0YHQv9C+0YHQvtCxINC80LDRgdGB0L7QstC+?= =?UTF-8?B?0LPQviDQv9C10YDQtdC90L7RgdCwIGh0dHAyINC40LcgbGlzdGVuINCyINC+0YI=?= =?UTF-8?B?0LTQtdC70YzQvdGD0Y4g0LTQuNGA0LXQutGC0LjQstGD?= Message-ID: <80cd250a-5118-472d-9952-ff5d33e11a53@kinetiksoft.com> Здравствуйте! Я про nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in /etc/nginx/sites-enabled/...:152 Надо http2 из параметра директивы listen перенести в отдельную http2 on; У меня несколько десятков блоков server. В некоторых http2 нужен, в некоторых (listen 80) нет. Есть какие-нибудь идеи как конвертацию сделать массово? С уважением, Иван. From bgx на protva.ru Thu Dec 28 08:21:55 2023 From: bgx на protva.ru (Evgeniy Berdnikov) Date: Thu, 28 Dec 2023 11:21:55 +0300 Subject: =?utf-8?B?0J/RgNC+0YHRgtC+0Lkg0YHQv9C+?= =?utf-8?B?0YHQvtCxINC80LDRgdGB0L7QstC+0LPQviDQv9C10YDQtdC90L7RgdCwIGh0?= =?utf-8?B?dHAyINC40LcgbGlzdGVuINCyINC+0YLQtNC10LvRjNC90YPRjiDQtNC40YA=?= =?utf-8?B?0LXQutGC0LjQstGD?= In-Reply-To: <80cd250a-5118-472d-9952-ff5d33e11a53@kinetiksoft.com> References: <80cd250a-5118-472d-9952-ff5d33e11a53@kinetiksoft.com> Message-ID: On Thu, Dec 28, 2023 at 10:07:41AM +0200, Иван wrote: > nginx: [warn] the "listen ... http2" directive is deprecated, use the > "http2" directive instead in /etc/nginx/sites-enabled/...:152 > > > Надо http2 из параметра директивы listen перенести в отдельную > > http2 on; > > > У меня несколько десятков блоков server. В некоторых http2 нужен, в > некоторых (listen 80) нет. Есть какие-нибудь идеи как конвертацию сделать > массово? Это конкурс на лучший однострочник в кружке юного программиста? perl -i~ -pe 'if(m/listen\s+/ && s/\s+http2//) {print "http2 on;\n"}' *.conf -- Eugene Berdnikov From mdounin на mdounin.ru Thu Dec 28 13:45:18 2023 From: mdounin на mdounin.ru (Maxim Dounin) Date: Thu, 28 Dec 2023 16:45:18 +0300 Subject: =?koi8-r?B?8NLP09TPyiDT0M/Tz8IgzcHT?= =?koi8-r?B?08/Xz8fPINDF0sXOz9PBIGh0dHAyIMnaIGxpc3RlbiDXIM/UxMXM2M7VwCDE?= =?koi8-r?B?ydLFy9TJ19U=?= In-Reply-To: <80cd250a-5118-472d-9952-ff5d33e11a53@kinetiksoft.com> References: <80cd250a-5118-472d-9952-ff5d33e11a53@kinetiksoft.com> Message-ID: Hello! On Thu, Dec 28, 2023 at 10:07:41AM +0200, Иван wrote: > Здравствуйте! > > Я про > > nginx: [warn] the "listen ... http2" directive is deprecated, use the > "http2" directive instead in /etc/nginx/sites-enabled/...:152 > > > Надо http2 из параметра директивы listen перенести в отдельную > > http2 on; > > > У меня несколько десятков блоков server. В некоторых http2 нужен, в > некоторых (listen 80) нет. Есть какие-нибудь идеи как конвертацию > сделать массово? Исходная идея была в том, что теперь http2 можно включить в том числе для "listen 80", соединения по HTTP/2 детектируются автоматически. Соответственно можно просто включить http2 на уровне http{} и забыть. Или наоборот, включить http2 только в тех блоках сервер, где хочется иметь HTTP/2 включённым, а в остальных не включать. Подробнее в коммит-логе тут: https://hg.nginx.org/nginx/rev/08ef02ad5c54 -- Maxim Dounin http://mdounin.ru/ From mdounin на mdounin.ru Thu Dec 28 13:54:43 2023 From: mdounin на mdounin.ru (Maxim Dounin) Date: Thu, 28 Dec 2023 16:54:43 +0300 Subject: =?koi8-r?B?8NLP09TPyiDT0M/Tz8IgzcHT?= =?koi8-r?B?08/Xz8fPINDF0sXOz9PBIGh0dHAyIMnaIGxpc3RlbiDXIM/UxMXM2M7VwCDE?= =?koi8-r?B?ydLFy9TJ19U=?= In-Reply-To: References: <80cd250a-5118-472d-9952-ff5d33e11a53@kinetiksoft.com> Message-ID: Hello! On Thu, Dec 28, 2023 at 11:21:55AM +0300, Evgeniy Berdnikov wrote: > On Thu, Dec 28, 2023 at 10:07:41AM +0200, Иван wrote: > > nginx: [warn] the "listen ... http2" directive is deprecated, use the > > "http2" directive instead in /etc/nginx/sites-enabled/...:152 > > > > > > Надо http2 из параметра директивы listen перенести в отдельную > > > > http2 on; > > > > > > У меня несколько десятков блоков server. В некоторых http2 нужен, в > > некоторых (listen 80) нет. Есть какие-нибудь идеи как конвертацию сделать > > массово? > > Это конкурс на лучший однострочник в кружке юного программиста? > > perl -i~ -pe 'if(m/listen\s+/ && s/\s+http2//) {print "http2 on;\n"}' *.conf Предостерегу от подобных решений: в общем случае это не даст идентичный конфиг, так как из чего-то вроде: server { listen 443 ssl http2; server_name foo; ... } server { listen 443; server_name bar; ... } где HTTP/2 работает в обоих блоках server, получится конфигурация вида: server { listen 443 ssl; http2 on; server_name foo; ... } server { listen 443; server_name bar; ... } где во втором блоке server HTTP/2 выключен. -- Maxim Dounin http://mdounin.ru/ From izorkin на gmail.com Fri Dec 29 07:32:21 2023 From: izorkin на gmail.com (izorkin на gmail.com) Date: Fri, 29 Dec 2023 10:32:21 +0300 Subject: =?utf-8?B?UmU6IE1pbWUtdHlwZXM6INC+0LHQvdC+0LLQu9C10L3QuNC1?= In-Reply-To: References: <9610390738.20231117100125@gmail.com> <962197451.20231118175617@gmail.com> Message-ID: <976877287.20231229103221@gmail.com> Добрый день, Максим. Удалось рассмотреть предлагаемые изменения? Или мне надо отправить патчи на почтовый адрес nginx-devel на nginx.org либо в trac.nginx.org? Вы писали 19 ноября 2023 г., 3:15:54: > Боюсь, так это не работает. Если хочется что-то добавить к > существующему списку типов в mime.types, то стоит по каждому > предлагаемому к добавлению MIME-типу расписать, что это, и зачем > это нужно в mime.types для типичного web-сайта. -- С уважением, Izorkin mailto:izorkin на gmail.com