The OpenNET Project / Index page

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

Выход Apache 2.3.11 ознаменовал переход ветки 2.3 на стадию бета-тестирования

09.03.2011 22:20

Увидел свет новый выпуск экспериментальной ветки http-сервера Apache 2.3.11, на базе которой будет сформирована стабильная ветка 2.4. Версия 2.3.11 примечательна переходом на стадию бета-тестирования, на которой наращивание функциональности сменяется стадией выявления и исправления ошибок. В состав ветки 2.3.x вошли новые возможности которые невозможно интегрировать в стабильную ветку 2.2.x в силу большого размера вносимого кода, необходимости значительной переработки подсистем или из-за нарушения совместимости.

Релиз 2.3.11 включает в себя Apache Portable Runtime (APR) 1.4.2 и APR-Util 1.3.10, которые в отличие от прошлых выпусков выделены в отдельный архив "-deps". В Apache 2.3.11 используется расширенный вариант Apache 2.2 API, поэтому для работы в Apache 2.3.x собранных для Apache 2.2.x модулей требуется их пересборка и, возможно, незначительная модификация кода.

Из новшеств, ожидаемых в будущей стабильной ветке Apache 2.4, можно отметить:

  • Несколько MPM могут быть сразу собраны в виде динамически загружаемых модулей, которые можно активировать в конфигурации без последующей пересборки;
  • С модуля Event MPM снят гриф экспериментальной разработки. Event MPM основан на коде модуля Worker и реализует гибридную модель обработки соединений, сочетающую многопоточность с пулом ожидающих соединения процессов;
  • Возможность определения через оператор "If" блоков конфигурации, привязанных к отдельным запросам (Per-request configuration). Например, можно использовать If "$req{Host} = ''", внутри выражения можно ссылаться на HTTP-заголовки запроса ($req), заголовки ответа ($resp) и переменные окружения ($env);
  • Реализована поддержка асинхронных операций чтения и записи;
  • Возможность определения через директиву LogLevel разных форматов ведения лога для отдельных модулей и директорий;
  • Возможность указания значения параметра KeepAliveTimeout в миллисекундах;
  • Новые модули:
    • mod_lua - позволяет интегрировать в httpd интерпретатор языка Lua;
    • mod_proxy_fcgi - модуль с поддержкой проксирования протокола FastCGI (поддержка схемы "fcgi:" в директиве "ProxyPass");
    • mod_proxy_scgi - модуль с поддержкой проксирования протокола SCGI (поддержка схемы "scgi:" в директиве "ProxyPass");
    • mod_ratelimit - позволяет организовать ограничение пропускной способности клиентов (например, суммарно для всех можно ограничить общую пропускную способность только для страницы загрузки файлов);
    • mod_remoteip - заменяет значение IP-клиента на содержимое из определенного HTTP-заголовка (например, X-Client-IP или X-Forwarded-For). Обычно модуль используется при работе apache в роли бэкенда;
    • mod_reflector - позволяет возвращать клиенту тело запроса, применив к нему определенный фильтр;
    • mod_reqtimeout - позволяет установить таймаут и минимальную интенсивность потока данных при обработке входящих запросов (например, "RequestReadTimeout body=10,MinRate=1000" ограничивает время загрузки тела запроса 10 секундами, плюс прибавляет по 1 секунде на каждые 1000 байт полученных данных);
    • mod_request - позволяет определить фильтр для обработки и распространения тела запроса;
    • mod_slotmem_shm - система доступа к разделяемой памяти на основе слотов (scoreboard);
    • mod_allowmethods - позволяет ограничить некоторые HTTP-методы не мешая авторизации и аутентификации (например, "AllowMethods GET HEAD OPTIONS");
    • mod_buffer - позволяет организовать буферизацию для входящих и исходящих фильтров.
  • Измененные модули:
    • В mod_ssl добавлена поддержка проверки статуса клиентского сертификата на OCSP серверах. Также добавлена возможность совместного использования данных SSL сессии на нескольких http-серверах, через задействование memcached;
    • В mod_cache добавлена поддержка кэширования HEAD-запросов. Директивы mod_cache теперь можно указывать в привязке к отдельным директориям, а не только для отдельного сервера. Добавлена возможность выводить устаревшие данные из кэша в случае недоступности рабочего бэкенда. В заголовок X-Cache можно подставлять значения HIT/MISS/REVALIDATE;
    • В mod_include в элемент 'include' добавлена поддержка атрибута 'onerror', позволяющего вывести свой документ при ошибке вместо вывода используемого по умолчанию текста ошибки (например, include virtual="/not-exist.html" onerror="/error.html");
    • В mod_proxy значительно увеличена производительность работы директивы ProxyPass в блоках Location и LocationMatch, что значительно быстрее, чем использование традиционного синтаксиса "ProxyPass путь URL";
    • В mod_proxy_balancer расширено число параметров BalancerMembers, которые можно менять через balancer-manager. Добавлена возможность добавления новых параметров BalancerMembers через balancer-manager. Поддержка изменения во время исполнения подмножества параметров директивы Balancer;
    • В модулях mod_cgi, mod_include, mod_isapi и т.п. преобразование заголовков в переменные окружения осуществляется по более строгим правилам, например, блокируются попытки осуществления XSS-атак через подстановку скриптов в заголовки. Все заголовки в которых используются специальные символы теперь молча удаляются. Для проброса некорректных с точки зрения новых правил переменных окружения в устаревшие скрипты предусмотрено несколько обходных путей;
    • В модуле mod_authz_core расширенная логика авторизации может быть задана при помощи Require и связанных директив, таких как RequireAll;
  • Дополнительные компоненты:
    • В поставку Apache включен скрипт fcgistarter, предназначенный для запуска серверных FastCGI процессов.
    • В утилиту htcacheclean - добавлены функции просмотра и удаления отдельных прокэшированных URL и связанных с ними мета-данных;
  • Средства для разработчиков модулей:
    • Интерфейс для кэширование небольших объектов, основанный на ранее созданном для mod_ssl кэше сессионных данных. В качестве хранилища можно использовать цикличный буфер в разделяемой памяти, dbm-базу на диске и memcached;
    • Добавлен парсер выражений общего назначения, API которого основан на ap_expr.h. Код парсера основан на ранее реализованном парсере для mod_include;
    • Добавлен hook check_config для проверки конфигурации на ранней стадии загрузки, позволяя независимо проанализировать параметры определенных директив и при необходимости откорректировать их;
    • Для оценки статуса mod_cache добавлен hook cache_status, вызываемый после принятия решения о кэшировании. Реализация по умолчанию добавляет при ответе опциональные заголовки X-Cache в X-Cache-Detail.


  1. Главная ссылка к новости (http://mail-archives.apache.or...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/29857-httpd
Ключевые слова: httpd, apache
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (47) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, iZEN (ok), 01:00, 10/03/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Чуть ли не единственный проект Apache, написанный на языке программирования C++. Остальное — Java.
     
     
  • 2.3, бедный буратино (ok), 01:06, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Представляешь, как у них руки чешутся?
     
     
  • 3.4, iZEN (ok), 01:25, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Альтернатива: вынести весь C++-булшит из юзерспейса в Apache Harmony, а поверх запустить типобезопасный аппсервер Apache Geronimo. ;)
     
     
  • 4.5, анонимус (??), 01:51, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +6 +/
    И кто будет юзать такие тормоза?
     
     
  • 5.6, anonymous (??), 02:02, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ну так а поверх все равно nginx запускать.
     
     
  • 6.11, iZEN (ok), 07:21, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А зачем поверх nginx запускать?
     
     
  • 7.16, ананим (?), 07:39, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +5 +/
    и то верно.
    nginx нужно запускать самостоятельно. без java-кода.
    а то вон даже С от С++ уже не отличают.
     
  • 7.42, Stax (ok), 17:38, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Чтобы не тормозило. А почему сразу не nginx - ну создан портал, использует апачевские расширения, работает, надежен. Предлагает переделывать под nginx, что еще не факт, что выйдет? Куда проще запустить его как кэширующий сервер и иметь и скорость, и фичи.
     
  • 5.12, iZEN (ok), 07:23, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > И кто будет юзать такие тормоза?

    Тормоза только на старте. Дальше уже отJITится и в памяти закэшируется.


     
     
  • 6.17, ананим (?), 07:42, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +3 +/
    видимо после этого должна последовать реклама хостинга впс.
    как в м-видио - с 4 гига, 4 яддра.
     
  • 6.27, Аноним (-), 12:19, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Память всегда можно использовать более еффективно чем хранить jit'овские экскременты. Кроме того, этот код ни разу не оптимизирован, потому что иначе оно бы вообще не стартовало :) В итоге - тормоза просто кошмарные.
     
     
  • 7.47, iZEN (ok), 21:37, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Память всегда можно использовать более еффективно чем хранить jit'овские экскременты.

    Под файловый кэш, например, ZFS использует память наиболее эффективно и отдаёт её приложениям по первому требованию. Но почему-то считается, что 90% занятого ОЗУ — недостаток. ;) Так и с JIT.

    Объясните мне, почему держать незанятым 50% и более ОЗУ на сервере считается нормой?

    > Кроме того, этот код ни разу не оптимизирован, потому что иначе оно бы вообще не стартовало :)

    Почитайте о технологии JIT что ли.

    >В итоге - тормоза просто кошмарные.

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

     
     
  • 8.49, klalafuda (?), 22:13, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что малейший всплеск активности - и вся скворечня накроется медным тазом ... текст свёрнут, показать
     
  • 6.44, Stax (ok), 17:43, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >> И кто будет юзать такие тормоза?
    > Тормоза только на старте. Дальше уже отJITится и в памяти закэшируется.

    Угу, только вот незадача: полный JIT всего и вся на развесистом коде может увеличить потребление памяти приложения на много сотен мегабайт, к тому моменту, когда "все отJITится". Или никогда не видели java-приложения, у которого при -Xmx200m потребление памяти через пару недель зашкаливает за гиг при использовании java -server, которая "все отJITтит"?

    А тормоза и потом, знаете ли. Сколько хипа не выделишь, с тем, как типичный джава-код постоянно создает объекты, постоянно кто-то будет его хотеть, значит GC будет постоянно чистить от шлака, и на крупном приложении, когда хипа много можно такие залипоны получить от GC, что тормоза при старте покажуется сказкой.

     
     
  • 7.48, iZEN (ok), 21:41, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >А тормоза и потом, знаете ли. Сколько хипа не выделишь, с тем, как типичный джава-код постоянно создает объекты, постоянно кто-то будет его хотеть, значит GC будет постоянно чистить от шлака, и на крупном приложении, когда хипа много можно такие залипоны получить от GC, что тормоза при старте покажуется сказкой.

    Профилирование кода для продакшена никто не отменяет. И, да, "утечки" памяти для Java тоже никто не отменял, профилировщик как раз и показывает, где неэффективно создаются и уничтожаются объекты. Чаще это происходит не в системных библиотеках и аппсерверах (они-то как раз отлично поднастроены, чтобы избегать такого), а в пользовательских бинах.

     
  • 2.10, багрепортер (?), 06:11, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот, блин, а нам всю жизнь рассказывали, что Апач на православном C написан. А он на богомерзком C++, оказывается. Кто ошибся? Исходники моего 2.2.x на C, и компилятся подозрительно быстро для C++-проекта.
     
     
  • 3.13, iZEN (ok), 07:24, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Вот, блин, а нам всю жизнь рассказывали, что Апач на православном C
    > написан. А он на богомерзком C++, оказывается. Кто ошибся? Исходники моего
    > 2.2.x на C, и компилятся подозрительно быстро для C++-проекта.

    Правда что ли? Ну значит я лажанулся насчёт "написан на C++". Исправляюсь: "Чуть ли не единственный проект Apache, написанный на языке программирования C".

     
     
  • 4.23, Sergey722 (?), 10:29, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +4 +/
    К чему эти полумеры? Исправляться так уж полностью: "Чуть ли не единственный проект Apache" ;)
     
  • 2.14, klalafuda (?), 07:35, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Чуть ли не единственный проект Apache, написанный на языке программирования C++. Остальное — Java.

    Блин, я все понимаю и можно много не знать и пр. Но лохануться *так сильно* - это где-то на грани. Не знать, что апач - это чистый C и при этом пытаться гнуть пальцы на опеннете - это сильно.

     
     
  • 3.18, iZEN (ok), 09:30, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >> Чуть ли не единственный проект Apache, написанный на языке программирования C++. Остальное — Java.
    > Блин, я все понимаю и можно много не знать и пр. Но
    > лохануться *так сильно* - это где-то на грани. Не знать, что
    > апач - это чистый C и при этом пытаться гнуть пальцы
    > на опеннете - это сильно.

    Ну не удалось протроллить сиплусплусников.  Да. Лажанулся.


     
     
  • 4.31, Michael Shigorin (ok), 12:24, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Помогает не иметь троллинг целью.  Это разве что средство, и то сомнительное.  Trust me.

    PS: до сих пор сижу на 1.3.x (про EOL в курсе), и как-то на 2.x неохота -- потребление памяти чуть ли не как у джа... ой.  В общем, неразумное какое-то как для прослойки между nginx и mod_{security,php,perl}.

     
     
  • 5.41, хмм (?), 16:58, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Но зачем? fastcgi же
     
  • 5.45, andy (??), 21:21, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Помогает не иметь троллинг целью.  Это разве что средство, и то сомнительное.  Trust me.

    Помогает обычно иметь голову на плечах, и не говорить о том, чего не знаешь :)
    P.S: iZEN - ты уже дописался на джаве. У тебя мозги тормозят так же, как и виртуальная машина у любимого тобой языка программирования.

     
     
  • 6.46, iZEN (ok), 21:31, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Пробуксовывают, а не тормозят.
     
  • 2.15, ананим (?), 07:37, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >Чуть ли не единственный проект Apache, написанный на языке программирования C++. Остальное — Java.

    видимо поэтому он чуть ли не единственный из проектов Apache, который кому-то реально нужен.

    зыж
    это может показаться жабисту смешным, но С (на котором написан апач) немножко отличается от С++ (на котором НЕ написан апач)

     
     
  • 3.19, iZEN (ok), 09:32, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >>Чуть ли не единственный проект Apache, написанный на языке программирования C++. Остальное — Java.
    > видимо поэтому он чуть ли не единственный из проектов Apache, который кому-то
    > реально нужен.
    > зыж
    > это может показаться жабисту смешным, но С (на котором написан апач) немножко
    > отличается от С++ (на котором НЕ написан апач)

    Apache ни разу не понадобился, поэтому не учёл того, что многопоточность в Apache2 реализована РУКАМИ, а не с помощью библиотек C++. Думал, что всё-таки использовали достижения C++ на поприще многопоточности, а оказывается нет.

     
     
  • 4.21, klalafuda (?), 10:05, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Apache ни разу не понадобился, поэтому не учёл того, что многопоточность в Apache2 реализована РУКАМИ, а не с помощью библиотек C++. Думал, что всё-таки использовали достижения C++ на поприще многопоточности, а оказывается нет.

    Уууйди а?! Перл за перлом и все перловее... Не позорься pls.

     
     
  • 5.24, iZEN (ok), 10:33, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >> Apache ни разу не понадобился, поэтому не учёл того, что многопоточность в Apache2 реализована РУКАМИ, а не с помощью библиотек C++. Думал, что всё-таки использовали достижения C++ на поприще многопоточности, а оказывается нет.
    > Уууйди а?! Перл за перлом и все перловее... Не позорься pls.

    Замолкаю.


     
     
  • 6.32, ананим (?), 12:34, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    единственно здравая мысль.

    зыж
    хоть бы сабж читнул что ли. даже не источник, а этот, местный.
    а вообще, эффективную схему mpm http://httpd.apache.org/docs/2.2/mod/worker.html сейчас на С (и уж тем более на С++) реализовать гораздо проще чем на жабе.

     
  • 4.37, Mike Lee (?), 13:30, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    в ц++ как бе нет многопоточности. им это не надо.
     
     
  • 5.51, Ytch (?), 23:21, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >в ц++ как бе нет многопоточности.

    В "ц++" (также как и в "це") есть всё, что позволяет ОС и почти всё, что позволяет железо (в отличие от...). Другое дело, что далеко не все могут это нормально использовать )))

     
     
  • 6.52, Mike Lee (?), 00:50, 11/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    тогда не надо говорить чо ц++ подходит для кроссплатформеной разработки.
     
  • 4.43, Vitaly_loki (ok), 17:42, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, еще скажи, что SMP всякие в ядрах на C++ делаются :)
     
  • 3.20, iZEN (ok), 09:33, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >>Чуть ли не единственный проект Apache, написанный на языке программирования C++. Остальное — Java.
    > видимо поэтому он чуть ли не единственный из проектов Apache, который кому-то
    > реально нужен.

    У них ещё есть Hadoop, который многим нужен. Почему-то написан на Java.

     
     
  • 4.28, Аноним (-), 12:21, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > У них ещё есть Hadoop, который многим нужен. Почему-то написан на Java.

    PHP тоже "многим нужен".

     
     
  • 5.33, Andrey Mitrofanov (?), 12:56, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>многим нужен. Почему-то написан на Java.
    > PHP тоже "многим нужен".

    Да! И не "написан на джабба". Мы его помали?

     
  • 2.53, Gular (ok), 16:15, 11/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Subversion не на C++, imho.
     

  • 1.7, аон (?), 02:08, 10/03/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > mod_lua - позволяет интегрировать в httpd интерпретатор языка Lua

    Ктонить может привести пример, где эта фича будет полезна?

     
     
  • 2.8, angra (ok), 03:42, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Например для более изощренного контроля доступа или переписывания урлов, чем позволяют другие модули апача. Примерно тоже, что может делать в этом вопросе mod_perl. Но не для написания на lua сайтиков по аналогии с mod_php.
     
     
  • 3.25, Aqueelone (?), 10:39, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Это еще вопрос! Есть такой штук -- Prosody.IM -- весьма занятная штука. Модули под него на Lua. Один из них, кстати, поднимает FastCGI вэб-сервак.
    Вот видать для подобных вариантов -- чтоб можно было заинтегрировать Prosody.IM и Apache -- такое и может пригодиться.
    Потому тут получится не то что сайтик на lua --- а целая jabber ферма.
     
  • 2.9, Михайло (??), 03:52, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    На встроенных системах.
     
     
  • 3.30, Аноним (-), 12:23, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > На встроенных системах.

    "Встроенных", боже... На "встроенных" нет никаких апачей и быть не может.

     
     
  • 4.36, Dvorkin (??), 13:22, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    может, если я встрою. ничто не мешает
     
     
  • 5.39, Аноним (-), 16:24, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, так и винду модно встроить, ага.
     
     
  • 6.40, klalafuda (?), 16:39, 10/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну да, так и винду модно встроить, ага.

    Ну так и встраивают, ага. И как правило вполне себе удовлетворительно работает.

     

  • 1.22, ALHSLeo (ok), 10:19, 10/03/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >mod_remoteip - заменяет значение IP-клиента на содержимое из определенного HTTP-заголовка (например, X-Client-IP или X-Forwarded-For). Обычно модуль используется при работе apache в роли бэкенда;

    Тоже хорошо, отдельно мод_рпаф собирать не придётся для бекендов, да о рейтлимит встроили, обрастают встроеными рюшечками, облегчая сборку - не надо вспоминать какие модули и к чему прикручивал ...

     
  • 1.26, Aqueelone (?), 10:43, 10/03/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот чего не видно -- будет ли сие поддерживать технологию web-socket хотя бы на уровне APE-Servers. Было бы не плохо...


     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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