shoorick: (Рыжий)
shoorick ([personal profile] shoorick) wrote2013-04-29 03:32 pm

На чём делать перловый веб-сервер?

Как я только не запускал перловые скрипты на веб-серверах — и как CGI, и как mod_perl (на обоих апачах), и как FastCGI через nginx.

А какой способ принято сейчас использовать?

Мы завели отдельную железяку под перловый хостинг, чтоб выселить туда всё перловое: несколько сайтов на Mojolicious, Catalyst и Movable Type плюс древний самописный кошмар, который давно переписать на чём-нибудь современном.

Хочется сделать это хорошо и правильно. Как быть? Что читать?

[identity profile] tarkhil.livejournal.com 2013-04-29 09:49 am (UTC)(link)
Я делаю сейчас все на FastCGI, и вроде как все хорошо...

FastCGI

[identity profile] shoorick.livejournal.com 2013-04-29 10:59 am (UTC)(link)
На FastCGI тоже делал — до сих пор работает.
Более того, перешёл туда с mod_perl, когда меня утомил расход памяти.

Просто на всякий случай интересуюсь, чтоб от жизни не отстать.

[identity profile] knutov.livejournal.com 2013-04-29 11:36 am (UTC)(link)
Но очевидно же, всё должно быть на Plack и запускаться или через starman или через FastCGI.

[identity profile] shoorick.livejournal.com 2013-04-29 12:02 pm (UTC)(link)
Вот я с Plack дела ещё не имел, потому и неочевидно.
Почему?

[identity profile] knutov.livejournal.com 2013-04-29 12:04 pm (UTC)(link)
Единый продуманный стандарт со способами запускаться любым способом.

Возможность запускать любым сервером через старман, включая всякие эниевент, если внутри оно не блокируется. Ну т.е. тысяч 15 коннектов в секунду там делается в итоге легко и без усилий. А 5 тыс - вообще сразу из коробки.
Edited 2013-04-29 12:04 (UTC)

(Anonymous) 2013-04-29 01:01 pm (UTC)(link)
т.е. перл/старман/plack решил проблему c10k легко и без усилий?

(Anonymous) 2013-04-29 02:25 pm (UTC)(link)
эти бенчмарки с реальностью не имеют ничего общего.

[identity profile] perlito.livejournal.com 2013-04-29 04:28 pm (UTC)(link)
пореальней чем ты

[identity profile] knutov.livejournal.com 2013-04-29 04:41 pm (UTC)(link)
у меня реальный проект на дансере дает 5.5k rps и при запуске через старман и при запуске через fastcgi.

[identity profile] shoorick.livejournal.com 2013-04-29 06:08 pm (UTC)(link)
То есть, в твоём случае получается, что пофиг. Так?
Ну через FastCGI я сайты на Mojolicious запускал — значит, можно просто копировать конфиг со старого сайта.

[identity profile] infist-xxi.livejournal.com 2013-04-30 08:12 am (UTC)(link)
А сколько воркеров запускаете под такую нагрузку?

[identity profile] knutov.livejournal.com 2013-04-30 08:21 am (UTC)(link)
Предсказуемо пик получается при количестве воркеров равном количеству ядер.

Нагрузка - много разных апи от биллинга, контрольной панели, мониторингов и всей обвязки между ними.

[identity profile] eladar.myopenid.com (from livejournal.com) 2013-04-29 07:43 pm (UTC)(link)
uwsgi + nginx не?

Image

http://bitrate.epipe.com/starman-vs-uwsgi-psgi-server-performance-comparison_104
Edited 2013-04-29 19:45 (UTC)

[identity profile] shoorick.livejournal.com 2013-04-30 06:27 am (UTC)(link)
Не встречал ещё такого варианта.

Интересно было бы всё-таки увидеть сравнение на реальных задачах — мне кажется, что сравнивать скорость на коротеньком хелловорлде не совсем корректно.

Спасибо, попробую.

[identity profile] knutov.livejournal.com 2013-04-30 08:24 am (UTC)(link)
На реальных задачах всё упирается в мускль.

В дансере с Dancer::Plugin::Database можно делать коннекты к мусклю с keepalive и переиспользовать старый коннект при последующем запросе, в итоге таких коннектов получается по числу воркеров и всё хорошо.

Гипотетически вместо этого модуля можно использовать асинхронную работу с мусклем - VTI недавно выкладывал готовый модуль, но у меня на самом деле постоянной такой нагрузки нет, я поленился пробовать.