Интересное мнение :)<br>Давайте устроим онлайн хакатон - сделаем теситрование различных серверных решений:<br>&nbsp;- FastCGI<br>&nbsp;- mod_perl2<br>&nbsp;- HTTP::Daemon<br>&nbsp;- Net::Server<br>&nbsp;- Catalyst::Engine<br>&nbsp;- POE<br><br>Я могу написать на POE, вариантов несколько, в т.ч. и pre-fork есть.<br>
Только нужно опеределиться с прикладной логикой, которую будем тестировать (желательно, не Hello World тестировать :).<br>Тестирование следует проводить всех решений на ОДНОМ сервере.<br>Что важно:<br>&nbsp;- производительность (количество запросов в секунду)<br>
&nbsp;- использование ресурсов (память, CPU, количество процессов)<br>&nbsp;- отказоустойчивость<br>&nbsp;- расширяемость<br>и прочее<br><br>Давайте определимся и сделаем это.<br>Т.к. вопрос всех давно интересует, а реального сравнения нет.<br>
<br><div class="gmail_quote">27 мая 2008 г. 10:10 пользователь Sergey Skvortsov &lt;<a href="mailto:skv@protey.ru">skv@protey.ru</a>&gt; написал:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">Anton Yuzhaninov wrote:<br>
&gt; On 26.05.2008 23:24, Sergey Homenkow wrote:<br>
&gt;&gt;&gt; Что в мире перла сейчас наиболее правильно использовать для написания<br>
&gt;&gt;&gt; fastcgi сервисов ?<br>
&gt;&gt; Предлагаю дискуссию на тему &quot;протокол FastCGI против HTTP&quot;.<br>
&gt;&gt;<br>
&gt;&gt; Последние два сервиса делал на HTTP::Daemon<br>
<br>
</div>Чем больше я смотрю на FastCGI, тем меньше вижу в нём смысла.<br>
<br>
Рассмотрим связку nginx + perl-backend/fastcgi.<br>
<br>
Что позволяет FastCGI? Ничего интересного.<br>
<br>
1. Frontend парсит входящий запрос и преобразует его в FastCGI<br>
2. Backend берет request и что-то с ним делает (зачастую - тупо<br>
преобразует в HTTP::Request).<br>
3. Отдаёт ответ.<br>
<br>
Всё то же самое позволяет делать просто HTTP.<br>
<br>
Плюсы HTTP:<br>
- нет overhead&#39;а на преобразование HTTP -&gt; FastCGI -&gt; HTTP<br>
- легко отлаживать соединения через tcpdump<br>
- понятный log tracing<br>
- не надо знать ещё один протокол (сколь бы ни простым он был)<br>
- текстовые протоколы рулят!<br>
<br>
Что могло бы быть интересным плюсом FastCGI?<br>
<br>
- authorizer. Nginx этот режим не поддерживает - да особо и не надо.<br>
<br>
- filters. Аналогично. Лучше задачу template system на frontend как-то<br>
другим образом решить (если в такой задаче вообще есть смысл)<br>
<br>
- мультиплексирование. Мало FastCGI-managers в принципе это умеют, да и<br>
мало кто из программирует в расчёте на мультиплексирование.<br>
Даже если хочется мультиплексирования (а keep-alive backend в nginx пока<br>
и нет), то лучше это сделать как-то более системно (ну скажем такой<br>
экзотический вариант: HTTP-over-BEEP).<br>
<br>
В общем, FastCGI - это для PHP.<br>
<br>
Вывод:<br>
- важна скорость/изолированность: пишите свой http backend daemon (это<br>
просто!)<br>
- важна функциональность: mod_perl2<br>
<br>
imho оптимальный вариант из Engine для Catalyst сейчас -<br>
Catalyst-Engine-HTTP-Prefork (надо только туда добавить поддержку unix<br>
sockets).<br>
<br>
Интересно было бы сравнить memory overhead для Perl-backend&#39;а на:<br>
- FastCFI<br>
- HTTP::Daemon / Net::Server<br>
- mod_perl2<br>
<br>
Есть сильное подозрение, что разница не столь уж значительна - даже в<br>
сравнении с mod_perl2.<br>
<div class="Ih2E3d"><br>
&gt; FastCGI позволяет писать логи на фронтенде (stderr можно отправлять на фронтенд).<br>
&gt;<br>
&gt; В случае HTTP::Daemon надо сомому реализовывать запись логов в файлы и их переоткрытие по сигналу для ротации.<br>
<br>
</div>Используйте Log::Log4perl - там _всё_ что надо уже есть.<br>
В т.ч. ротацию по сигналу, watching логов.<br>
<font color="#888888"><br>
--<br>
Sergey Skvortsov<br>
mailto: <a href="mailto:skv@protey.ru">skv@protey.ru</a><br>
</font><div><div></div><div class="Wj3C7c">--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/moscow-pm" target="_blank">http://mail.pm.org/mailman/listinfo/moscow-pm</a></div></div></blockquote></div><br><br clear="all"><br>-- <br>С уважением,<br> Анатолий Шарифулин.