본문 바로가기

리눅스

[draft] PHP-FPM 풀 설정을 구성하는 방법

728x90

PHP-FPM 풀(www.conf) 설정을 구성하는 방법

PHP-FPM은 FastCGI 기반의 PHP 프로세스 관리 도구로, 웹 서버와 PHP를 분리하여 웹 서버의 성능을 향상시킬 수 있습니다. www.conf는 PHP-FPM의 설정 파일 중 하나로 PHP-FPM 워커 프로세스의 동작 방식을 제어합니다.

 

1. PHP-FPM 풀(www.conf) 설정 파일 위치

www.conf 파일이 어디에 있는지 확인해야 합니다. 대개 PHP-FPM 설치 시 www.conf 파일은 /etc/php-fpm.d/ 디렉토리에 위치합니다.

2. PHP-FPM 풀(www.conf) 설정 파일 복사

www.conf 파일은 기본적으로 존재하지 않으며 php-fpm.conf 파일을 복사하여 생성해야 합니다.

cp /etc/php-fpm.d/www.conf.default /etc/php-fpm.d/www.conf

3. 풀 설정 파일 기본 구성

풀 설정 파일에서 사용할 수 있는 주요 설정 값입니다.

vim /etc/php-fpm.d/www.conf
[my-pool]                    ; 풀 이름, unique해야 함
user = www-data              ; PHP-FPM이 사용할 사용자
group = www-data             ; PHP-FPM이 사용할 그룹

listen = /run/php/php8.1-fpm-my-pool.sock ; 이 풀에서 사용할 소켓(혹은 TCP 포트)
listen.owner = www-data      ; 소켓 파일의 소유자
listen.group = www-data      ; 소켓 파일의 그룹
listen.mode = 0660           ; 소켓 파일의 권한 설정

pm = dynamic                 ; 프로세스 관리 모드 (static, dynamic, ondemand 중 선택)
pm.max_children = 50         ; 최대 PHP-FPM 프로세스 수
pm.start_servers = 5         ; 초기로 시작할 프로세스 수 (dynamic일 때만 유효)
pm.min_spare_servers = 5     ; 최소 유휴 프로세스 수 (dynamic일 때만 유효)
pm.max_spare_servers = 10    ; 최대 유휴 프로세스 수 (dynamic일 때만 유효)

; 요청당 리소스 제한 설정
pm.max_requests = 500        ; 각 PHP-FPM 프로세스가 처리할 최대 요청 수 (0일 경우 무제한)

; 상태 및 로그 설정
access.log = /var/log/php-fpm/my-pool.access.log ; 액세스 로그
slowlog = /var/log/php-fpm/my-pool.slow.log      ; 느린 요청 로그
request_slowlog_timeout = 5s  ; 느린 요청을 기록할 시간 (초 단위)

;pm.status_path = /status

; PHP 설정 오버라이드
php_admin_value[memory_limit] = 128M ; 풀에 대한 PHP 메모리 제한
php_admin_value[upload_max_filesize] = 50M
php_admin_value[post_max_size] = 50M

4. 주요 설정 항목 설명

[my-pool] : 풀의 이름으로 각 풀은 고유한 이름을 가져야 합니다.

user / group : 해당 풀에서 실행되는 PHP-FPM 프로세스가 사용할 사용자와 그룹입니다.

listen : 해당 풀에서 사용할 소켓 경로 또는 TCP 포트를 지정합니다. 예를 들어, listen = 127.0.0.1:9001은 특정 포트로 요청을 받을 수 있게 합니다.

pm : 프로세스 관리 모드로 다음 중 하나를 설정할 수 있습니다.

  • static : 고정된 수의 프로세스만 실행.
  • dynamic : 필요에 따라 프로세스가 동적으로 생성/제거됩니다.
  • ondemand : 요청이 있을 때만 프로세스가 생성됩니다.

pm.max_children : 최대 프로세스 수로 동시에 처리할 수 있는 최대 요청 수를 제한합니다.

pm.start_servers, pm.min_spare_servers, pm.max_spare_servers : 프로세스 관리가 dynamic일 때 사용되는 파라미터로 풀의 성능을 조정하는 데 사용됩니다.

pm.max_requests: 각 PHP-FPM 프로세스가 처리할 최대 요청 수를 지정하며, 이 수에 도달하면 해당 프로세스는 종료되고 새 프로세스가 생성됩니다. 메모리 누수를 방지하는 데 유용합니다.

slowlog : 지정된 시간 내에 완료되지 않은 요청을 기록할 로그 파일로 성능 문제를 파악하는 데 사용됩니다.

728x90

5. PHP-FPM 재시작

PHP-FPM을 재시작하여 변경 사항을 적용합니다.

sudo systemctl restart php7.4-fpm

PHP-FPM 상태 확인

sudo systemctl status php7.4-fpm

 


www.conf 파일에서 설정할 수 있는 값은 다음과 같습니다.

 

  • user와 group: PHP-FPM 워커 프로세스가 실행될 때 사용될 유저와 그룹을 설정합니다. 일반적으로 웹 서버의 유저와 그룹과 동일하게 설정합니다.
  • listen: PHP-FPM 워커 프로세스와 웹 서버가 통신하는 방법을 설정합니다. 가장 일반적인 방법은 소켓 파일을 사용하는 것입니다. listen 값은 다음과 같이 설정할 수 있습니다.
    • 소켓 파일: /run/php/php7.4-fpm.sock
    • TCP/IP 소켓: 127.0.0.1:9000
  • pm.max_children: PHP-FPM 워커 프로세스의 최대 개수를 설정합니다. 이 값은 서버의 하드웨어 스펙과 PHP 애플리케이션의 특성에 따라 결정됩니다.
  • pm.start_servers: PHP-FPM 워커 프로세스의 초기 시작 개수를 설정합니다.
  • pm.min_spare_servers: PHP-FPM 워커 프로세스의 최소 유지 개수를 설정합니다. 서버의 부하가 낮을 때 유지할 프로세스 개수입니다.
  • pm.max_spare_servers: PHP-FPM 워커 프로세스의 최대 유지 개수를 설정합니다. 서버의 부하가 높을 때 유지할 프로세스 개수입니다.
  • pm.max_requests: PHP-FPM 워커 프로세스가 처리할 최대 요청 수를 설정합니다. 이 값은 워커 프로세스의 메모리 누수를 방지하기 위해 사용됩니다.
  • pm.status_path: PHP-FPM의 상태를 확인하기 위한 URL을 설정합니다. 이 설정은 보안상의 이유로 주석 처리되어 있을 수 있습니다.

위와 같이 www.conf 파일에서 설정할 수 있는 값들은 PHP-FPM 워커 프로세스의 동작 방식을 제어하는 데 필수적입니다. 따라서, 적절한 값을 설정하여 서버의 성능을 최적화하는 것이 중요합니다.

 

참고URL

- PHP-FPM 최신(php-fpm 8.1) 버전 설치하기 : https://scbyun.com/1206

- PHP-FPM 최신(php-fpm 7.4) 버전 설치하기 : https://scbyun.com/1080

- nginx php-fpm 연동 : https://scbyun.com/1175

 

728x90