PHP-FPM 설정 조정으로 502 오류를 완전히 없앴습니다
← 전체 목록
워드프레스운영

PHP-FPM 설정 조정으로 502 오류를 완전히 없앴습니다

ℹ️ 본 글은 정보 제공 목적이며, 광고·제휴 링크가 포함될 수 있습니다.
목차 보기

워드프레스 502 Bad Gateway 오류 해결은 Nginx + PHP-FPM 환경에서 운영하다 보면 반드시 한 번은 마주치는 문제입니다. 제가 관리하는 병원 사이트는 검진 예약 접수 당일 오전 9시 전후로 502 오류가 반복됐습니다. 동시 접속이 늘면서 PHP-FPM 프로세스가 부족해진 것이 원인이었습니다. 설정 몇 줄 조정으로 이후에는 같은 상황에서 502가 사라졌습니다.

502 오류 원인 확인

# Nginx 오류 로그 확인
sudo tail -50 /var/log/nginx/error.log

# PHP-FPM 오류 로그 확인
sudo tail -50 /var/log/php8.1-fpm.log

# PHP-FPM 상태 확인
sudo systemctl status php8.1-fpm

로그에서 흔히 나오는 502 원인:

  • connect() to unix:/run/php/php8.1-fpm.sock failed: PHP-FPM 소켓 연결 실패
  • upstream timed out: PHP-FPM 응답 시간 초과
  • no processes: PHP-FPM 프로세스 모두 사용 중

PHP-FPM 프로세스 수 늘리기

PHP-FPM 풀 설정 파일을 수정합니다.

sudo nano /etc/php/8.1/fpm/pool.d/www.conf
; 현재 설정 (기본값)
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

; 트래픽 많은 환경으로 조정
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10

pm.max_children 을 늘리면 더 많은 동시 요청을 처리할 수 있습니다. 단, 프로세스당 메모리를 사용하므로 서버 RAM을 고려해야 합니다. 각 PHP 프로세스는 약 3050MB를 사용합니다. 1GB RAM 서버에서 max_children = 20 이면 약 600MB1GB가 PHP-FPM에 할당됩니다.

적용 후 재시작:

sudo systemctl restart php8.1-fpm

Nginx 타임아웃 설정 확인

PHP가 오래 걸리는 요청을 처리할 때 Nginx가 먼저 포기하면 502가 납니다.

location ~ \.php$ {
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    fastcgi_read_timeout 120;   # 기본 60초 → 120초로
    fastcgi_connect_timeout 60;
    fastcgi_send_timeout 120;
}

502 오류는 대부분 PHP-FPM 프로세스 부족 또는 타임아웃이 원인입니다. 로그로 원인을 특정하고 나서 해당 설정을 조정하면 해결됩니다.

편집 정책

의료기관 인프라 운영 현장 경험을 바탕으로 작성하며, WavePix 운영자 (의료기관 3곳 인프라 전담)가 최종 검수합니다.

작성·검수: WavePix 운영자 (의료기관 3곳 인프라 전담)