Постоянный, предварительно заблокированный (блокирующий) веб-сервис Perl в Windows

Я хотел бы запустить веб-приложение на Perl в Windows (предположим, что 2008 R2 x64) с разумной скоростью / емкостью.

В настоящее время мое приложение основано на Mojolicious, использует Strawberry Perl и работает как CGI через Apache 2.2-win32. Приблизительно с 20000 строками кода создание процесса perl занимает много времени, почти секунду или две, в то время как фактическая обработка занимает всего лишь мгновение секунды. Я полагаю, что он будет работать намного быстрее и сможет обслуживать гораздо больше запросов в секунду, если приложение настроено в быстром CGI или постоянном стиле.

Если бы я работал в Linux, я бы, вероятно, придерживался обратного проксирования PSGI/Plack/Starman и Nginx. К сожалению, Starman/Starlet не поддерживает Win32.

Morbo / Twiggy не отвечает моим потребностям, потому что веб-приложение блокирует (вызовы БД), и для некоторых запросов требуется некоторое время для завершения.

Так что я смотрю на решение Fast CGI прямо сейчас. К сожалению, Apache и mod_fcgid не работают с Perl ( Stackru). И я еще не смог найти или разработать совместимый двоичный файл с mod_fastcgi с 2.4. Что-то, что я еще не пробовал, это mod_fastcgi + Apache 2.2, но я бы хотел остаться на Apache 2.4.

Я также думаю, что я мог бы запустить свой собственный диспетчер процессов FCGI (то, что управляет предварительным форкингом) вместе с Mojo::Server::FastCGI и использовать вместо него mod_proxy_fcgi для создания обратного прокси-сервера. Модуль Perl FCGI::ProcManager также не поддерживает Win32. Может ли быть какой-нибудь другой менеджер процессов, возможно в C#? (Желательно в C# для дальнейшего взлома)

Позвольте мне подвести итог вопроса -

  • Какой лучший способ запустить веб-приложение Perl в Windows со скоростью, намного превышающей скорость CGI, но не в неблокирующем стиле.
  • и, возможно, это приводит к вопросу - как заставить mod_fcgid работать с Perl? Или есть менеджер процессов fcgi там?

2 ответа

Решение

Вы можете использовать многопоточный сервер Plack Thrall.

Вы можете использовать Mojolicious + mod_psgi + apache.

Здесь есть предварительно скомпилированные двоичные файлы, хотя для Apache 2.2:

http://strawberryperl.com/package/kmx/mod_psgi/

- Майк

Другие вопросы по тегам