← 전체 목록
워드프레스운영

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 프로세스 부족 또는 타임아웃이 원인입니다. 로그로 원인을 특정하고 나서 해당 설정을 조정하면 해결됩니다.

편집 정책

AI가 초안을 생성하고, 의료기관 인프라 운영자가 1차 데이터 기반으로 최종 검수·승인합니다.

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