Как стать автором
Обновить

RoadRunner здесь и сейчас

Время на прочтение2 мин
Количество просмотров7.7K

Для Laravel вышел пакет Laravel Octane который призван подружить Laravel c Swoole и RoadRunner. Мы уже какое-то время используем RoadRunner вместо php-fpm и поделимся своим опытом использования, какие у этого есть плюсы.

RoadRunner – это высокопроизводительный сервер приложения для PHP с открытым исходным кодом написанный на Go. Основное отличие от php-fpm состоит в том, что RoadRunner взаимодействует с долгоживущими php процессами, в отличии от php-fpm, который создает и убивает новый php процесс при каждом запросе. 

Плюсы долгоживущего процесса:

  • Не тратится время на booting

  • Не тратится время на создание подключения к БД

  • Возможность использования in-memory кэша прямо в процессе

Минус такого подхода состоит в том, что он не подходит для всех PHP приложений, т.к. зачастую при написании кода учитывается, что PHP процесс умрет после запроса. Таким образом, нужно уметь следить за утечками памяти, аккуратно работать с глобальным состоянием. Поэтому legacy проекты, скорее всего, на RoadRunner’е на заведутся. 

Однако у RoadRunner’а есть и другие полезные функции, например, обратка статики, сжимание ответа, балансировка. Данные функции в типичной связке падают на nginx. А при использовании RoadRunner’а PHP приложение можно поднять вообще без него (nginx’а).

Так же RoadRunner довольно легко расширяем. Можно использовать его компоненты для собственного application сервера и получить возможность, например, обработки каких-то запросов прямо на Go, работать с websocket’ами.

Сам по себе RoadRunner не новая разработка, ему уже пара лет. Однако при официальной поддержке в виде Laravel Octane можно быть уверенным, что фреймворк готов к работе с ним.

Мы провели небольшой тест на одном реальном проекте, где сравнили скорость php-fpm и roadrunner. Результаты получились следующими:

php-fpm:

plain text: 1150 RPS

single query: 530 RPS

roadrunner:

plain text: 2200 RPS

single query: 1600 RPS

plain text -- запрос отдающий константный JSON

single query -- запрос отдающий результат одного запроса к БД в формате JSON

Виден существенный прирост в скорости, который обусловлен отсутствием времени на booting и использованием постоянного подключения к БД.

Теги:
Хабы:
+7
Комментарии7

Другие новости

Истории

Работа

PHP программист
157 вакансий
Go разработчик
128 вакансий

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн