The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Релиз nginx 1.23.0

21.06.2022 22:32

Представлен первый выпуск новой основной ветки nginx 1.23.0, в рамках которой будет продолжено развитие новых возможностей. В параллельно поддерживаемой стабильной ветке 1.22.x вносятся только изменения, связанные с устранением серьёзных ошибок и уязвимостей. В следующем году на базе основной ветки 1.23.x будет сформирована стабильная ветка 1.24.

Основные изменения:

  • Переделан внутренний API, строки заголовков теперь передаются в форме связанного списка.
  • Обеспечено объединение строк заголовков с идентичными именами при передаче в бэкенды FastCGI, SCGI и uwsgi, в методе $r->header_in() модуля ngx_http_perl_module и в переменных "$http_...", "$sent_http_...", "$sent_trailer_...", "$upstream_http_..." и "$upstream_trailer_...".
  • Для ошибок SSL "application data after close notify" уровень логов понижен с "crit" до "info".
  • Устранена проблема с зависанием соединений в nginx, собранном на Linux-системах с ядром 2.6.17 и новее, но используемом на системах без поддержки EPOLLRDHUP (например, при применении эмуляции epoll).
  • Устранена проблема с кэшированием ответов, если заголовок "Expires" запрещал кэширование, а "Cache-Control" разрешал.
  • Решены проблемы, проявляющиеся, если бэкенд выдавал в ответе в несколько заголовков "Vary" и "WWW-Authenticate".


  1. Главная ссылка к новости (http://nginx.org/#2022-06-21...)
  2. OpenNews: Релиз nginx 1.22.0
  3. OpenNews: Выпуск сервера приложений NGINX Unit 1.27.0
  4. OpenNews: Игорь Сысоев ушёл из компаний F5 Network и покинул проект NGINX
  5. OpenNews: Rambler заявил свои права на Nginx. В офисе Nginx проведена выемка документов
  6. OpenNews: Спор о правах Rambler на Nginx продолжен в суде США
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/57385-nginx
Ключевые слова: nginx
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (40) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, topin89 (ok), 22:47, 21/06/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Переделан внутренний API, строки заголовков теперь передаются в форме связанного списка.

    Кто пограмотнее, объясните, какая с этого выгода.
    Я искал время от времени случаи, где связный список лучше, чем указатели на массив/двустороннюю очередь, и не мог найти ничего полезней чем "ну когда нужно вставлять один контейнер в середину другого", и даже там на коротких массивах выгоды как правило не было.
    Раз перешли на них, должна быть хорошая причина, о которой я не догадываюсь.

     
     
  • 2.5, Онаним (?), 23:09, 21/06/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Быстрая вставка, быстрое удаление элемента - единственное, что могу придумать.

    Больше ничего в голову не приходит. Ещё есть конечно вариант, когда суммарный размер всех указателей сопоставим с размером L1D хотя бы, а останавливаться при проходе надо максимум посерёдке - но это явно не тот случай.

     
     
  • 3.21, Аноним (-), 01:21, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/matklad/vec-vs-list
     
     
  • 4.42, Онаним (?), 22:25, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Что за ...ня, написанная на ...не, простите?
     
  • 4.43, Онаним (?), 22:26, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А самое главное - какое эта ^_^ня имеет отношение к nginx?
     
  • 4.49, Онаним (?), 22:52, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Я даже тебе объясню, почему вообще мимо тазика: реализация этих примитивов на езычге, где работа с указателями реализована через libastral (или libanal), может быть совершенно неоптимальной.
     
  • 2.6, Онаним (?), 23:10, 21/06/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    С другой стороны бинарный поиск в отсортированном списке - так себе затея, т.е. это tradeoff.
    Вот в жизни не поверю, что у них число вставок-удалений превышает число поисков.
     
     
  • 3.35, topin89 (ok), 10:41, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > С другой стороны бинарный поиск в отсортированном списке - так себе затея,
    > т.е. это tradeoff.
    > Вот в жизни не поверю, что у них число вставок-удалений превышает число
    > поисков.

    Да даже если и превышает, ну будет массив указателей на строки размером на 10-30 строк, там вставка не будет сильно медленней, чем в списках. Из-за высокой локальности оно может ещё и быстрее оказаться.

     
     
  • 4.44, Онаним (?), 22:27, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Вставка в связанный список - это 2 указателя заменить, если по-минимуму. O(1)
    Вставка в массив указателей - это, простите, сдвинуть N указателей. O(N)
     
     
  • 5.45, Онаним (?), 22:29, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    (кроме вырожденного случая вставки в конец массива)
     
     
  • 6.53, 1 (??), 09:36, 23/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Наоборот, вырожденный случай вставлять в середину массива (это ж надо иметь отсортированный массив), а так всегда добавляется в конец.
     
     
  • 7.54, Онаним (?), 13:39, 23/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Вставка в конец массива (или, если быть совсем точным - всегда в одинаково отдалённую от конца массива позицию) - это O(1), не зависит от числа элементов в массиве, поэтому и вырожденный случай.
     
  • 2.12, native76 (ok), 23:34, 21/06/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    возможно, меньшая фрагментация памяти - возможность pre-alloc/pool блоков одинакового размера. при высокой нагрузке это может быть важно.
     
     
  • 3.40, topin89 (ok), 14:52, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > возможно, меньшая фрагментация памяти - возможность pre-alloc/pool блоков одинакового
    > размера. при высокой нагрузке это может быть важно.

    Почитал про Pool Allocator, спасибо за место, где в связном списке больше смысла, чем в простом массиве. Но не могу понять по коду nginx, чанки ли там или просто список сам по себе.

     
  • 3.46, Онаним (?), 22:34, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Блоки одинакового размера для содержимого хедеров?
    Не, конечно это nginx, там всякое может быть. Но не верю.
     
  • 2.20, Аноним (20), 01:11, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Выгода от связного списка есть, только если он intrusive, как в ядре линуховом. В остальных случаях классическая реализация с указателем на следующую ноду что асимптотически так себе, что с точки зрения фрагментации кучи. Не зря же в той же жабе в 90% процентов случаев пользуются реализацией на основе массива.
     
     
  • 3.36, topin89 (ok), 11:07, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Выгода от связного списка есть, только если он intrusive, как в ядре линуховом.

    А какая? Есть какая информация в духе "вот тут мы заменили X на linked list -- и стало слегка/гораздо быстрее", может в LKLM где-нибудь?

     
  • 3.37, Аноним (37), 11:28, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Аргументация о том что так называемые "программисты на java", не знающие чем фон неймановская архитектура отличается от гарвардской, используют массивы, а не связные списки скорее говорит в пользу связных списков.
    То что "макака-формошлёп" будет использовать неподходящие структуры данных понятно любому настоящему программисту на ANSI C, обильно комментирующему новости на opennet
     
     
  • 4.38, 1 (??), 12:29, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ну и как поможет "программисту на java" знания о том, перемешиваются данные и код или нет, в выборе структуры данных ?
    Вопрос был о том, почему перешли с массива на связный список.
     
  • 2.28, Lucky (??), 05:23, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Раз перешли на них, должна быть хорошая причина, о которой я не догадываюсь

    На самом деле возможность обходить нормальные заготовки как связный список там есть давно. Просто в некоторых специфичных случаях использовались ещё и массивы (например для multi headers - когда в сообщении может быть несколько заголовков с одинаковым именем, как в случае с Set-Cookie). Из-за этого итерация по заголовкам и их значениям превращалась в квест на костылях. Теперь структуры данных привели к одному виду.

     
     
  • 3.34, topin89 (ok), 10:37, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >> Раз перешли на них, должна быть хорошая причина, о которой я не догадываюсь
    > Теперь структуры данных привели к одному виду.

    Но зачем было в принципе список использовать? Почему не перейти к массивам? Почему в принципе был выбран именно список? А то вдруг он выбран давным-давно и теперь все хотели бы заменить, но обратная совместимость и не чини что работает.

     
  • 2.32, 1 (??), 09:11, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Читаю ветку и душа радуется. Наконец-то что-то вменяемое, без "ненужно", раста и несоответствий в версиях питона (недавно, как раз, попал в Jinja2 версии 3.1).
    Вполне себе профессиональная беседа.
     
  • 2.47, Онаним (?), 22:38, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Пришёл на ум ещё один вариант, когда связный список эффективнее - это когда его надо часто на запись блокировать между потоками (вставка-удаление). В случае массива указателей придётся блокировать таковой целиком (или извращаться с частичной блокировкой). В случае связного списка блокировать придётся только непосредственно участвующие записи (одну или две, в зависимости односвязный или двусвязный это список).

    Но это опять не про nginx.

     
     
  • 3.48, Онаним (?), 22:42, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну и на вставку в связный список аналогично хорошо RCU ложится, если возможность в соседнем потоке пролистать список в stale state без нового элемента не напрягает. На удаление - на любителя, прочитать удалённую запись обычно не есть гуд.
     

  • 1.7, Гость (??), 23:17, 21/06/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Зачем ссылка на изменения на английском и зачем было их переводить по своему? есть же русская версия http://nginx.org/ru/CHANGES.ru
     
  • 1.14, Мохнатый пись (?), 00:15, 22/06/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Когда квик в стабильную версию добавят?
     
     
  • 2.17, Аноним (17), 00:59, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >Когда квик в стабильную версию добавят?

    Гуглу или Фэйсбуку с их миллионами TCP коннектами понятно зачем квик.
    А тебе оно зачем?

     
     
  • 3.23, Аноним (23), 01:50, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну я замечал, что в 2 раза быстрее сайты загружаются. Так 2 секунды где-то до появления контента, а с этим около 0.5с. В консоли смотрел-сравнивал разницу, там пишет время загрузки ресурсов.
     
     
  • 4.26, Аноним (26), 03:33, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    У тебя цифры не сходятся, перепроверь свои навыки в арифметике.
     
     
  • 5.33, another_one (ok), 09:59, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    "быстрее сайты загружаются" и  "где-то до появления контента" не одно и тоже, может в "2 раза" это до события "load".
     
  • 4.39, Аноним (39), 13:11, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ну я замечал, что в 2 раза быстрее сайты загружаются. Так 2 секунды где-то до появления контента, а с этим около 0.5с.

    Это баг в Vue, должны починить. Загрузка сайтов не должна занимать менее двух секунд.

     
  • 3.25, Аноним (25), 03:24, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Quic нужен, чтобы под него маскировать любой другой UDP трафик.
     
     
  • 4.30, Аноним (30), 08:48, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    откуда дровишки?
     
     
  • 5.31, Аноним (25), 08:58, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Для начала от проекта v2ray и ему подобных. Которые уже кое-что подобное сделали, только на старой версии квика.

    Но для того, чтобы не светиться как новогодняя ёлка, нужно чтобы квик стал популярным.

    Ну а потом придёт masque wg, и маскировка будет встроена в сам протокол.

     
  • 2.19, Аноним (17), 01:06, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хайп "передовых технологий" поймал?
     
  • 2.22, Ilya Indigo (ok), 01:29, 22/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Не раньше, чем поддержку оного в openssl добавят.
     

  • 1.50, Вы забыли заполнить поле Name (?), 03:41, 23/06/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Без Сысоева уже не то...
     
     
  • 2.51, Онаним (?), 09:05, 23/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Тем, кто ещё на этом сидит, ещё не начал phaseout, и не готов платить за поддержку - я бы уже советовал задуматься.
     
     
  • 3.56, Вы забыли заполнить поле Name (?), 08:30, 24/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Тем, кто ещё на этом сидит, ещё не начал phaseout, и не
    > готов платить за поддержку - я бы уже советовал задуматься.

    По факту проект закончен. Так бы выпилить из него ненужное типа njs (есть nginx-lua кому надо).

     
     
  • 4.57, Онаним (?), 22:39, 24/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Если из нгинха выпилить ненужное - не останется ничего.
     
  • 2.52, Аноним (-), 09:13, 23/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >Без Сысоева уже не то...

    Без твоего ценного мнения, всё - уже то.

     

  • 1.55, Какаянахренразница (ok), 13:55, 23/06/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Зачастили как-то релизы nginx-а...
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру