ngx_http_perl_module

Igor Sysoev is at rambler-co.ru
Wed Apr 26 11:31:18 MSD 2006


On Tue, 25 Apr 2006, Sergey Serov wrote:

> Кстати, а можно узнать, почему выбор встроенного языка был остановлен именно
> на перле? С одной стороны я вижу у Вас в коде сравнивание длины строки до
> strncmp, а с другой стороны - перл. Этот пожиратель памяти.
>
> Пока боролся с lighttpd обнаружил в нем полноценный встроенный Lua, хоть и
> назывался он там mod_cml (cache makeup language), но был совершенно
> полноценным встроенным языком. Синтаксис, конечно непривычный немного, но его
> работа совершенно не сказывалась на результатах моих бенчмарков.
> Статика и результат работы Lua выдавали одинаковое - порядка 5к запросов в сек
> на относительно слабой машине.

Изначально я не хотел встраивать какой-либо язык, поскольку неблокирующая
архитектура сервера накладывает существенные ограничения на его использование.
Позже я пришёл к выводу, что часть неблокирующихся задач вполне можно писать
на встраиваемом языке. Ну и кроме того, можно сделать обработчик запроса
в виде нескольких callback'ов, которые будут вызыватся после долгой
операции - резолвинг, ответ другого сервера, базы данных и прочая.
Разумеется, все эти длительные операции должны делаться не стандартными
средствами (gethostbynmame, connect и прочая), а обрабатываться самим
nginx'ом в неблокирующимся режиме.

Выбирать язык мне было особо не из чего. php, ruby и python я не знаю,
про lua читаю второй раз, а перл знаю не плохо и представляю, как его
встраивать. Что касается пожирания памяти, то, на мой взгляд, это зависит
от использования. perl есть память не всегда.

А strncmp используется, потому что nginx вычисляет длины всех строк один раз
и хранит их. Кроме того, часть строк не оканчивается '\0'.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list