Комментарии 18
Кстати в rr есть класс https://github.com/spiral/roadrunner/blob/master/src/HttpClient.php на нем можно делать интеграции не используя PSR-7. Работает он так же как и PSR7Client.
Ускорить с rr еще можно если заюзать очереди, memory queue позволяет запускать часть тяжелых задач в фоне.
Да, именно очередь для обработки задач в фоне. В rr можно установить http и queue одновременно, если интересно то вот сборка сразу с 3 пакетами: https://github.com/spiral/framework/releases/tag/v2.0.14
Идея пакета https://github.com/spiral/jobs в том что можно гонять задачи в фоне без какого либо брокера, чисто на каналах. А позже, поправить конфиг и вынести координацию в rabbitmq, sqs или куда-то еще.
С numWorkers > 1 не работает?
Срезали 150ms инициализации системы.
Так держать.
Коллега, снимаю шляпу. Это сродни попытке поставить Франкенштейна на беговую дорожку. То, что он побежал — уже чудо, а то, что при этом от него не отвалились части тела, говорит о вашем высоком профессиональном уровне! Читал, как в детстве "Науку и жизнь".
Мы смотрим в это сторону, в частности на swoole. Но для полноты решения нам еще нужно очищать состояние специфичное для выполнения запроса, а также очищать состояние при возниктновании исключений или ошибок.
Но поддержку PSR-7, мы точно хотим добавить. Если у вас есть время/желание — можете помочь Magento это сделать в виде контрибьюшена.
Хм, но om конфигурируется на уровне area(frontend, cron, etc) только, соответственно для одного скоупа конфиг идентичен и инстансы созданные om могут быть пошарены, если мы говорим про стейтлесс сервисы, которыми оперирует om. Или я что-то упускаю?
В идеальном мире — если сам сервис stateless, то да. Но мы, к сожалению не в идеальном мире и у нас попрежнему есть состояния.
Было бы интересно, в частности запустить Magento web api тесты, на таком сетапе и посмотреть проходят ли они.
Вот, тоесть с om все вроде ок, дело в конкретных сервисах. Но, насколько я понимаю, что проблема как в перечисленных сервисах (и всех остальных) не нова и может возникнуть и без swoole/rr.
Мне просто кажется, что с очисткой om будет значительно меньше выигрыш. Возможно следует выбрать что-то промежуточное, если нет возможности привести к работоспособному виду "плохие" сервисы. Например атрибут для di.xml похожее на "shared=false", но в рамках процесса.
Что касается тестов, то думаю будет не очень результат)
Интересное решение. Я решал проблему обычными способами типа мощного сервера, nginx, opcache, production mode, composer -o —no-dev, built-in cache. Все это позволяет сократить запросы к api до 80-250мс, в зависимости от запроса.
Разгоняем Magento Rest API c помощью RoadRunner