PHP-FPM vs RoadRunner (with Laravel)

2025. 4. 22. 16:58·Web/PHP
반응형

 

개요

php 프로젝트를 개발하며 Nginx 웹 서버와 CGI(주로 FastCGI)를 사용하여 개발 및 운영했었다. Laravel 패키지들을 둘러보던 중 Octane을 읽어보며 php도 고성능 애플리케이션 서버가 있다는 것을 알게되었다. 그래서 Nginx/php-fpm 환경과 애플리케이션 서버(RoadRunner) 환경을 비교해보고자 간단한 테스트를 해봤다.

 

php-fpm (FastCGI Process Manager)

php의 기존 CGI보다 빠르고 효율적인 FastCGI 구현체로 웹 서버로부터 요청을 받아 php 프로세스를 관리한다. Master 프로세스가 초기에 Worker 프로세스들을 생성하여 웹 서버로부터 요청이 들어오면 적절히 분배해준다. Worker 프로세스는 요청 처리 후 idel 상태로 재활용되며 일정 수의 요청을 처리하면 다시 생성되는 구조를 갖고 있다.

 

RoadRunner

Go로 개발된 고성능 php 애플리케이션 서버다. 웹서버 없이 단독으로 실행되어, 사용자 요청이 서버에 들어오면 독립된 php 프로세스인 워커에게 전달하고 처리된 결과를 서버가 다시 사용자에게 응답한다. php-fpm과 다른 점은 php 프로세스가 종료되지 않고 요청을 지속적으로 처리한다. 워커가 초기 한 번만 bootstrap을 실행하여 메모리에 프로세스가 유지된 상태로 후속 요청들을 처리하기 때문에 매우 빠르다. 또한 HTTP, WebSocket, gRPC 등 다양한 프로토콜을 지원하며(플러그인이 존재) 내부적으로 Goridge라는 프로토콜을 사용하여 최적화된 유연함을 갖고있다.

Goridge

벤치마크 비교

애플리케이션 Laravel 12.x
동작 [GET] HTTP Reqeust "/ping"
가상 사용자(VU) 100
테스트 시간(Duration) 1 min

 

Laravel (PHP-FPM)

 

Laravel (RoadRunner) + Octane

 

평균 응답속도 측면에서 RoadRunner가 php-fpm 보다 약 50배(386ms에서 7ms)정도 빠른 속도를 보여줬다. 위 결과 값에는 없지만 Docker Desktop Stats로 확인한 결과 서버 리소스 사용율 또한 RoadRunner가 적게 사용하였다. 예상대로 성능 측면에서 RoadRunner가 훨씬 뛰어났다. 단, Laravel 애플리케이션에 적용할 경우 서비스 프로바이더로 바인딩할 때 singleton이 제한되니 유의해서 개발하면 좋을 것 같다.

 

python FastAPI와 비교했을 때 얼마나 빠를지 궁금하여 동일하게 테스트 해봤다.

FastAPI (uvicorn)

 

RoadRunner와 비슷한 수준의 응답속도를 보여준다. 서버 리소스 사용율은 RoadRunner가 bootstrap 과정이 초기에 필요하여 훨씬 높았던 것 같으나 조금 지나고 나서는 비슷한 수준이였다. 그래도 결과적으로 FastAPI가 조금 더 적게 사용했다.

 

결론

웹 사이트에 제한되어 사용되던 php가 애플리케이션 서버를 통해 다른 언어와 비슷한 성능을 보여줄 수 있다는 걸 알게 되어 유익했고, 앞으로 Laravel 프로젝트에서 Octane을 애용할 것 같다. 작은 규모의 테스트였지만 FastAPI 프로젝트를 구성하는데 정말 적은 시간이 소요됐다. FastAPI에게 호감이 생기는 시간이였다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'Web > PHP' 카테고리의 다른 글

PHP sort()  (0) 2023.06.27
PSR-1: Basic Coding Standard  (0) 2023.04.21
PHP 암호화 복호화  (0) 2022.11.03
PHP PDO()  (0) 2019.06.21
PHP mysqli()  (0) 2019.06.21
'Web/PHP' 카테고리의 다른 글
  • PHP sort()
  • PSR-1: Basic Coding Standard
  • PHP 암호화 복호화
  • PHP PDO()
helperwoo
helperwoo
\ೕ( ・ㅂ・)و /
  • helperwoo
    WooLog
    helperwoo
  • 전체
    오늘
    어제
    • All (55)
      • Web (25)
        • PHP (6)
        • Java (5)
        • Javascript (8)
        • Laravel (2)
        • Spring Boot (0)
        • React.js (1)
        • Electron.js (1)
        • Vue.js (1)
        • Nest.js (1)
      • Mobile (2)
        • Flutter (2)
      • SQL (1)
        • MySQL (4)
      • Docker (6)
      • Server (7)
      • Git (2)
      • Tool (3)
      • AI (2)
      • Tip (3)
      • Log (0)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      flutter
      nginx
      Compose
      CTE
      CLI
      프로그래머스
      vscode
      데이터베이스
      deepseek
      image
      docker
      JavaScript
      git
      MYSQL
      with
      알고리즘
      dart
      http
      코드
      php
      Laravel
      DB연동
      엘리스
      apache
      ignorecase
      챌린지
      recursive
      frankenphp
      ollama
      websocket
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    helperwoo
    PHP-FPM vs RoadRunner (with Laravel)
    상단으로

    티스토리툴바