ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ngx_http_perl_module



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



 




Copyright © Lexa Software, 1996-2009.