Size: a a a

2021 September 14

W

Warstone in Modern::Perl
Это его основная задача. Иначе как он тот-же node уделывает...
источник

W

Warstone in Modern::Perl
Соответственно для UniEvent есть https://metacpan.org/dist/UniEvent-HTTP-Manager/view/lib/UniEvent/HTTP/Manager.pod

Который вам наспавнит процессов сколько вы хотите и все они будут слушать те порты, которые вы скажете.
источник

W

Warstone in Modern::Perl
И в этом случае условный миллион RPS на одной тачке мы можете получить.
источник

NK

Nick Knutov Dobrohos... in Modern::Perl
а тесты, подтверждающие это - есть?
источник

W

Warstone in Modern::Perl
Ну я не проводил. Но вы можете это сделать довольно просто... Proof of concept - это попытаться сделать bind на unix сокет 2 раза
источник

W

Warstone in Modern::Perl
Из разных процессов. Это делается минут за 15
источник

NK

Nick Knutov Dobrohos... in Modern::Perl
почему бинд на один сокет двумя воркерами, почему не мультиплексирование одним слушателем?
источник

NK

Nick Knutov Dobrohos... in Modern::Perl
сходу гуглятся вот такие цифры про латенси - https://newbedev.com/tcp-loopback-connection-vs-unix-domain-socket-performance
источник

NK

Nick Knutov Dobrohos... in Modern::Perl
и на этом на малоядерных серверах уже в любом случае юниксокет должен оказываться быстрее
источник

W

Warstone in Modern::Perl
Потому что В Перле вы это не сделаете. У вас нету мультитредовости и вы все равно будете зависеть от 1 потока.
источник

W

Warstone in Modern::Perl
А сетевой интерфейс (Тот-же Intell'овский) может кормить юзерспейс быстрее одного ядра. Так что если вам нужна скорость - забудьте про unix сокеты.
источник

W

Warstone in Modern::Perl
Ну и RPS и latency это разные понятия, если что.
источник

NK

Nick Knutov Dobrohos... in Modern::Perl
а вот про это я забыл, да.
источник

MG

Mr. Good in Modern::Perl
Что нужно почитать, чтобы лучше понимать, как устроены эти все потоки и т.д.?
источник

NK

Nick Knutov Dobrohos... in Modern::Perl
но вот я сейчас запускаю через mod_fastcgi через юникс сокеты и у меня несколько воркеров.

миллиона рпс мне не надо. но быстрее, чем как сейчас - хочется, конечно. Если я правильно помню, то максимум что получается - примерно 6500 запросов в секунду на простых запросах к апи, а хотелось бы в два раза больше.
источник

W

Warstone in Modern::Perl
Эм... Есть процессы. В каждом процессе есть как минимум один поток. Можно создать больше. Но особенности реализации многопоточности в Перле убивают почти все плюсы многопоточности (не много процесности).

Что в этой фразе вам не понятн? (В зависимости от этого подскажу куда идти
источник

AG

Anatolia Gr in Modern::Perl
Как мне кажется гоните, у нас  unix сокет + prefork + Catalyst вполне себе работал, пока не переписали
источник

W

Warstone in Modern::Perl
Стоп... mod_fastcgi - это плаги к nignx'у-же, так?.. Там нету unix сокетов. Там пайпы.
источник

NK

Nick Knutov Dobrohos... in Modern::Perl
но в перле кстати же есть треды, с непонятной правда стабильностью и необходимостью очень аккуратно всё делать
источник

NK

Nick Knutov Dobrohos... in Modern::Perl
к апачу )
источник