피드로 돌아가기
Tuning PHP-FPM for Laravel: Workers, Memory, and Process Management
Dev.toDev.to
Infrastructure

PHP-FPM Worker 최적화를 통한 처리량 2배 향상 및 응답 속도 50% 개선

Tuning PHP-FPM for Laravel: Workers, Memory, and Process Management

Deploynix2026년 4월 11일12intermediate

Context

기본 PHP-FPM 설정의 범용적 설계로 인한 자원 낭비 및 특정 환경에서의 성능 저하 발생. Laravel 애플리케이션의 요청 처리 방식과 메모리 점유 특성을 고려하지 않은 기본값으로 인한 Throughput 병목 현상 노출.

Technical Solution

  • 서버 RAM 용량과 Worker당 메모리 점유율(30~128MB)을 기반으로 한 max_children 산출 방식 적용
  • 고정 트래픽 및 4GB 이상 RAM 환경에서 Worker 생성 오버헤드 제거를 위한 pm = static 모드 채택
  • 가변 트래픽 및 저사양 서버(1~2GB) 환경에서 자원 효율성 확보를 위한 pm = dynamic 구조 설계
  • 잦은 Worker 생성 및 파괴로 인한 CPU 낭비 방지를 위해 pm = ondemand 모드 배제
  • 메모리 누수 방지 및 프로세스 신선도 유지를 위한 pm.max_requests 설정 통한 주기적 Worker 리사이클링
  • slowlog 및 request_terminate_timeout 설정을 통한 I/O 병목 지점 식별 및 좀비 프로세스 제어

- 전체 가용 RAM에서 OS 및 DB 점유 메모리를 제외한 나머지 공간을 Worker당 평균 메모리로 나누어 max_children 산정 - 단일 앱 전용 서버 및 충분한 RAM 확보 시 pm = static 설정을 통한 응답 지연 최소화 검토 - wrk 또는 ab 툴을 활용하여 Load Test 진행 시 Listen Queue 적체 여부와 OOM Killer 작동 기록 모니터링 - Worker당 메모리 사용량이 급증하는 복잡한 요청(PDF 생성 등)의 비중을 분석하여 메모리 상한선 재설정

원문 읽기