PHP-FPM의 성능 최적화

PHP-FPM의 pm.max_children 설정 찾기 (PHP 8.x 기준)

PHP-FPM (FastCGI Process Manager)은 PHP 애플리케이션을 실행할 때 서버 성능을 최적화하는 데 중요한 역할을 합니다. 특히 pm.max_children 설정은 서버의 성능과 안정성에 큰 영향을 미치기 때문에 적절한 값을 찾는 것이 중요합니다. 이 글에서는 PHP 8.x 기준으로 pm.max_children 값을 설정하는 방법을 알아보겠습니다.

PHP-FPM의 작동 방식

PHP-FPM은 PHP 요청을 처리하기 위해 여러 워커 프로세스를 사용합니다. pm.max_children 설정은 동시에 실행될 수 있는 최대 워커 프로세스 수를 정의합니다. 이 값이 너무 낮으면 서버의 처리 능력이 떨어지고, 너무 높으면 메모리 부족으로 서버가 불안정해질 수 있습니다.

pm.max_children 값 계산하기

pm.max_children 값을 계산하기 위해 다음 단계를 따릅니다:

  1. 서버의 총 메모리 확인 먼저, 서버에서 사용할 수 있는 총 메모리 양을 확인해야 합니다. 이는 운영 체제와 다른 서비스들이 사용 중인 메모리를 제외한 값입니다.
  2. 단일 PHP 프로세스의 메모리 사용량 측정 PHP-FPM 워커 프로세스가 얼마나 많은 메모리를 사용하는지 확인합니다. 이를 위해 간단한 스크립트를 여러 번 실행하여 평균 메모리 사용량을 측정할 수 있습니다. 예를 들어, top 또는 ps 명령어를 사용하여 메모리 사용량을 모니터링할 수 있습니다.
  3. pm.max_children 값 계산 총 사용 가능한 메모리를 단일 PHP 프로세스의 메모리 사용량으로 나누면 pm.max_children의 적절한 값을 계산할 수 있습니다.
    pm.max_children = (총 사용 가능한 메모리) / (단일 PHP 프로세스의 메모리 사용량)

실습 예제

1단계: 서버의 총 메모리 확인

리눅스 서버에서 free -m 명령어를 사용하여 메모리 정보를 확인할 수 있습니다.

free -m

출력 예시:

              total        used        free      shared  buff/cache   available
Mem:           2048         512        1024         128         512        1536
Swap:          1024         256         768

위 출력에서 ‘available’ 값(1536MB)이 PHP-FPM에 사용할 수 있는 메모리입니다.

2단계: 단일 PHP 프로세스의 메모리 사용량 측정

간단한 PHP 스크립트를 작성하고 이를 실행하여 메모리 사용량을 확인합니다.

<?php
phpinfo();
?>

웹 서버에서 이 스크립트를 실행한 후, ps 또는 top 명령어를 사용하여 해당 프로세스의 메모리 사용량을 확인합니다. 예를 들어, 30MB라고 가정합니다.

3단계: pm.max_children 값 계산

이제 총 사용 가능한 메모리(1536MB)를 단일 PHP 프로세스의 메모리 사용량(30MB)으로 나누어 pm.max_children 값을 계산합니다.

pm.max_children = 1536 / 30 ≈ 51

따라서 pm.max_children 값을 51로 설정할 수 있습니다.

PHP-FPM 설정 파일 업데이트

php의 위치를 찾습니다.

which php

설정화일은 보통 php실행화일 위치의 ../etc/php-fpm.d/www.conf  에 있습니다.

이제 php-fpm.conf 파일이나 www.conf 화일에 관련 풀 설정 파일을 편집하여 pm.max_children 값을 설정합니다.

pm.max_children = 51

설정을 변경한 후 PHP-FPM 서비스를 재시작합니다.

sudo systemctl restart php-fpm

이와 같은 방식으로 pm.max_children 값을 설정하면 서버의 메모리 자원을 효율적으로 사용하면서도 안정적인 성능을 유지할 수 있습니다. PHP 8.3에서도 이러한 원칙은 동일하게 적용되므로, 서버 환경에 맞춰 적절히 조정하시면 됩니다.

PM값 계산기 링크

Leave a Comment

Index