Я скачал и запустил последнюю версию nxweb (3?) и ее
производительность на статическом контенте меня порадовала. Однако, я
сразу задумался над тем, как можно запускать скрипты на других языках
(по аналогии с модулями apache или hadler-ами в G-WAN).
Бегло просмотрев документацию я не нашел ответа на этот вопрос. Есть
ли какие-нибудь соображения на этот счет?
Хотелось бы прежде всего понять
1. Как передать данные о запросе в скрипт?
2. Как ограничить число порождаемых процессов-обрадотчиков
динамических скриптов?
Если никакой текстовой документации на этот счет нет, то подскажите,
какие исходники нужно смотреть...
/wbr, Andrew
1. Как передать данные о запросе в скрипт?
2. Как ограничить число порождаемых процессов-обрадотчиков
динамических скриптов?
On 25 апр, 23:39, Yaroslav <yaro...@gmail.com> wrote:
> Для использования других языков есть два способа:
>
> 1) линковка исполняющей платформы языка непосредственно с nxweb, вызов из
> обработчика nxweb методов компиляции и исполнения исходного кода на нужном
> языке. честно говоря, не представляю, как это делается, но если это могут
> делать модули апача, то наверное и для nxweb можно написать аналогичный
> модуль. вопрос - стоит ли заморачиваться.
Да, я задумывался об этом варианте. Поскольку многие языки могут
обрабатываться
просто вызовом динамической библиотеки, то в принципе - это вариант.
Даже без порождения процесса.
> 2) проксирование запроса к серверу приложений соответствующего языка.
> собственно, так я сам работаю с java.
Это понятно.
> Вообще nxweb задумывался для скорости, а для скорости нужен Си (ну или
> С++). Если нужна гибкость, то лично я предпочитаю проксирование.
Это тоже понятно, но серверов быстро отдающих статический контент (или
выполняющих С-шный код)
и так достаточно написано (тот же G-WAN). Хочется чуть большего.
Статика+динамика в одном флаконе.
> Если вас интересует конкретно язык php, то проксировать на него надо через
> FastCGI. nxweb, к сожалению, пока в FastCGI проксировать не умеет.
Нет, php не очень интересует. Уж больно он медленный и тяжелый.
Я задумываюсь скорее о Lua. Проигрыш в производительности относительно
С не такой уж большой,
да и среда легкая. Т.е. я ожидаю что время выполнение скрипта будет
сравнимо со скоростью отдачи
статического файла.
> По вашим вопросам:
>
> 1. Как передать данные о запросе в скрипт?
>
>
>
> Это определяется исполняющим модулем соответствующего языка. Могу только
> подсказать, где их взять в nxweb - см. модуль hello.c
Ок. Спасибо, посмотрю.
> > 2. Как ограничить число порождаемых процессов-обработчиков
> > динамических скриптов?
>
> nxweb не порождает процессы, только потоки (threads). Это может быть
> неприемлемым для некоторых исполняющих платформ (например, php не
> поддерживает потоки). если ваш обработчик будет порождать процессы, то ему
> предстоит и ограничивать их число. nxweb умеет ограничивать число потоков
> (см. файлы nx_workers.h и nx_workers.c).
Ага, ясно.
Поскольку смысла в порождении обработчиков в большом количестве
(больше чем процессорных ядер) нет, я и задумался на эту тему.
С другой стороны - нужно где-то сохранять приходящие запросы.
В любом случае - спасибо за оперативный ответ.
On 25 апр, 23:39, Yaroslav <yaro...@gmail.com> wrote:
> Для использования других языков есть два способа:
>
> Это определяется исполняющим модулем соответствующего языка. Могу только
> подсказать, где их взять в nxweb - см. модуль hello.c
Ok.
Сделал все по вашим рекомендациям - работает нормально.
Производительность выполнения
скриптов практически не страдает. Накладные расходы невелики. Однако
это был вариант
с обычным Lua. Теперь попробую прикрутить LuaJit.
/wbr, Andrew