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

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

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

Для 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 и использованием постоянного подключения к БД.

Теги:
Хабы:
Всего голосов 6: ↑5 и ↓1+7
Комментарии7

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

Истории

Работа

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

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

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн