
Sergey
29.04.2017
13:48:07
если ляжет мастер процесс - ляжет все
потому мастер процесс не должен делать вообще ничего
и все делигировать воркерам
тогда шанс падения будет существенно ниже

Google

Sergey
29.04.2017
13:48:32
чем тупее тем лучше
но не в этом дело
дело в том что php-pm общается с воркерами, а в моей схеме есть сферический сервер в вакууме (не обязательно на php) который умеет хранить очередь запросов
и ждет пока какой-то воркер возьмется его обрабатывать
направление взаимодействия в другую сторону, легко делать zero-downtime деплойменты
не надо делать супервизор - можно юзать любой готовый

Aleh
29.04.2017
13:50:03
короч тебе не нравится мастер процесс на пыхе?)

Sergey
29.04.2017
13:50:05
например я планирую юзать тупо docker демон как супервизор
мне не нравится тот факт что у процесса смешана зона ответственности, он и процессами рулит и http парсит
ну и я хочу go потыкать
как раз задачка

Aleh
29.04.2017
13:51:17
ну php-fpm также работает)

Google

Sergey
29.04.2017
13:51:18
но мне больше всего нравится в этой схеме то, что у тебя этот вот http сервер может быть на одной машине
а воркеры на другой

Aleh
29.04.2017
13:51:39
да

Sergey
29.04.2017
13:51:42
а моя штука будет по другому
между http и приложением будут ходить тупо psr-7 запросы/ответы
без http

Aleh
29.04.2017
13:52:22
сериалайзить будешь просто?

Sergey
29.04.2017
13:52:30
ну тип того, еще не уверен на 100%
это детали
ну и еще мне нравится идея этой "очереди" запросов
но я на 100% не уверен потому вбрсил сюда)
давай лучше придумай почему мой вариант говно

Aleh
29.04.2017
13:53:56
сложна

Sergey
29.04.2017
13:55:01
ну пока существенный минус это то что это все еще два разных контейнера
ну то есть я не могу тупо завести один контейнер с приложением и не париться
всеравно нужно что-то сверху что будет http обрабатывать
модель работы та же что у php-fpm но с очередью запросов и возможностью воркерам самим существовать и рулить тем как они живут
вечно, умирают после запроса, умирают после 10-ти запросов
еще из минусов - если процесс будет умирать после каждого запроса, то это будет вынуждать "рождать" процессы (то что фиксит php-fpm)

Google

Sergey
29.04.2017
13:58:18
плюс - штуки вроде "поработать после респонса" появляются автоматически
минус - php неудобно профайлить
надо бенчмарки подумать сделать
ну мол fpm vs symfony cli
если выхлоп будет и будет сильный - стоит имплементить
p.s. php-pm требует php-cgi которого нет официально в докерах и с php-cgi плохо работает opcache/apcu - не юзает шаред мемори

Sergey
29.04.2017
14:24:02
а зачем тебе опкеш для cli?

Sergey
29.04.2017
14:26:07
ну так... хотелось как-то получить буст от общей шаред мемори но я так понял что этого не получится
ну там буферы для строк всякие
но это только в fpm судя по всему
надо погонять бенчмарки короч
бо мне лично интересно

Sergey
29.04.2017
14:33:19
еще можно uwsgi попробовать

Алексей
29.04.2017
14:45:38
@fes0r Мне подумалось, что было бы круто такой демон, который форвардит воркерам сделать модулем nginx.
Ну, одну из реализаций демона.
Чтобы nginx готовил объекты под PSR-7 и в приложение отдавал.

Sergey
29.04.2017
14:47:39
https://hub.docker.com/r/devtheops/php7-uwsgi/
вот еще интересный подход
для тех кто не хочет тащить nginx/php-fpm
ну мол все приложение в одном контейнере
особенно полезно тем кто хочет деплоиться на aws ecs и юзать тупо лоад балансер

Google

Sergey
29.04.2017
14:53:56
почему просто не взять spring boot, который собирается в одну jar вместе со встроенным веб сервером и без всякого головняка?)

Sergey
29.04.2017
14:54:16
а переписывать текущее приложение под kotlin как-то не удобно... хотелось бы но чет лень

Sergey
29.04.2017
14:54:52
а как ты через очереди будешь хендлить запросы?

Sergey
29.04.2017
14:56:17
в смысле?
ну там не совсем очереди
скорее отложенная обработка... типа как лоток в конвеере - туда складываются запросы и ждут что положат ответ

Sergey
29.04.2017
14:57:24
ну я так понял будут консьюмеры обычные, которые будут с поднятыми контейнерами и при получении меседжей будут вызывать метод кернела и потом ответ обратно пихать

Sergey
29.04.2017
14:57:26
воркер подрубается, забирает запрос, обрабатывает и ложит ответ как сигнал о том что все хорошо

Admin
ERROR: S client not available

Sergey
29.04.2017
14:57:41
общение через zeromq

Sergey
29.04.2017
14:58:12
ну эт уже такое. хоть сокетами)

Sergey
29.04.2017
14:58:53
ну по сути это и есть сокетами, просто с удобной оберткой

Sergey
29.04.2017
14:58:55
я правда хз как оно по памяти будет

Sergey
29.04.2017
14:59:02
что "оно"?

Sergey
29.04.2017
14:59:11
обработка запроса
и еще ж следить нужно за всякими доктринами, чтобы вызывались очистки uow после запроса

Sergey
29.04.2017
15:00:08
ну вот с этим особо проблем нет
ну мол после каждого респонса проверять открыт ли коннекшен (вдруг закрылся) и ресетить entity manager

Google

Sergey
29.04.2017
15:00:51
флашить всякие монологи
свифтмэйлеры
следить что бы requestStack был пустым
чистить TokenStorage
что там еще может подтекать
сессии отрубить к чертям

Boris
29.04.2017
16:24:49
во вы замороченные =) Сергей а с чем связана цель этих ново велосипедов? задача такая встала или просто ради эксперементов?

Sergey
29.04.2017
16:39:29
все ради скорости)

Алексей
29.04.2017
16:46:14

Sergey
29.04.2017
16:46:54
Да, любопытно что можно выжать из php

Алексей
29.04.2017
16:48:55
Плюс тот же Symfony считают одним из самых медленных фреймворков. Хотя в других языках есть и более тяжёлые решения, просто они не перезапускаются постоянно.

Sergey
29.04.2017
17:17:21
симфони сам по себе если ты выкинешь все что там не надо очень даже шустрый
или например взять ту же доктрину - если ты юзаешь свои гидраторы ты можешь выборки ускорить раза так в 2-3

Алексей
29.04.2017
17:18:02
Ну вот флекс обещает упростить эту процедуру :)

Sergey
29.04.2017
17:18:26

Salavat
29.04.2017
17:22:34

Sergey
29.04.2017
17:22:45
берешь и выкидываешь
потом удаляем всякие ненужные листенеры

Sergey
29.04.2017
17:23:12
твиг)

Sergey
29.04.2017
17:23:19
твиг я оставил для profiler-а