Share This
Связаться со мной
Крути в низ
Categories
//RoadRunner здесь и сейчас

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

08.04.2021Category : My Habr

roadrunner zdes i sejchas 812ca28 - RoadRunner здесь и сейчас

Для 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 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close