본문 바로가기

리눅스

PHP 메모리 사용량 확인

반응형

PHP 메모리 사용량 확인

1. CPU 개수 출력

nproc
4

2. 모든 php-fpm 프로세스 정보 출력(php-fpm8.3)

  • comm : 명령어 (프로세스 이름)
  • rss : 실제 메모리 사용량 (Resident Set Size) (KB)
ps -ylC php-fpm8.3
S   UID     PID    PPID  C PRI  NI   RSS    SZ WCHAN  TTY          TIME CMD
S     0     667       1  0  80   0 20540 51058 ep_pol ?        00:00:00 php-fpm8.3
S    33     830     667  0  80   0  7748 51170 skb_wa ?        00:00:00 php-fpm8.3
S    33     831     667  0  80   0  7748 51171 skb_wa ?        00:00:00 php-fpm8.3

3. php-fpm 프로세스의 메모리 사용량 출력

ps -eo rss,pid,user,command --sort -rss | grep -v grep | \
awk '{ hr=$1/1024 ; printf("%13.2f Mb ", hr) } { for (x=4; x<=NF; x++) { printf("%s ", $x) } print "" }' | grep php-fpm
        20.06 Mb php-fpm: master process (/etc/php/8.3/fpm/php-fpm.conf)
         7.57 Mb php-fpm: pool www
         7.57 Mb php-fpm: pool www

4. php-fpm 프로세스의 평균 메모리 사용량

ps --no-headers -o "rss,cmd" -C php-fpm8.3 | \
awk '{ sum+=$1 } END { if (NR > 0) { printf ("%d%s\n", sum/NR/1024, "M") } else { print "0M" } }'
11M

5. 모든 프로세스의 메모리 사용량 출력

ps -eo rss,pid,user,command --sort -rss | grep -v grep | \
awk '{ hr=$1/1024 ; printf("%13.2f Mb ", hr) } { for (x=4; x<=NF; x++) { printf("%s ", $x) } print "" }' | head -n 10
         0.00 Mb COMMAND
        82.26 Mb /usr/sbin/mariadbd
        28.86 Mb /lib/systemd/systemd-journald
        26.60 Mb /sbin/multipathd -d -s
        20.98 Mb /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
        20.20 Mb /usr/libexec/packagekitd
        20.06 Mb php-fpm: master process (/etc/php/8.3/fpm/php-fpm.conf)
        18.52 Mb /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
        12.68 Mb /usr/libexec/udisks2/udisksd
        11.85 Mb /usr/sbin/ModemManager
728x90

pm.dynamic 모드에서 PHP 프로세스를 설정 - 1

  • CPU : 40EA
  • 메모리 : 32GB = 32,000MB
  • PHP 프로세스당 메모리 : 80MB

서버의 메모리 용량에 따라 최대 프로세스 수를 계산합니다.(시스템용으로 4GB 할당)

28,000MB / 80MB = 350
  • pm.start_servers : 초기 서버 시작 시 몇 개의 프로세스를 시작할지 설정합니다. vCPU 수를 기준으로 20~40개 정도로 설정하는 것이 좋습니다.
  • pm.min_spare_servers : 최소 유휴 프로세스 수를 설정합니다. 보통 vCPU 수의 절반 정도인 15~20개를 설정할 수 있습니다.
  • pm.max_spare_servers : 최대 유휴 프로세스 수를 설정합니다. vCPU 수에 맞춰 20~40개 정도로 설정하는 것이 좋습니다.
pm = dynamic
pm.max_children = 350
pm.start_servers = 30
pm.min_spare_servers = 20
pm.max_spare_servers = 40

pm.dynamic 모드에서 PHP 프로세스를 설정 - 2

  • CPU : 8EA
  • 메모리 : 16GB = 16,000MB
  • PHP 프로세스당 메모리 : 50MB

서버의 메모리 용량에 따라 최대 프로세스 수를 계산합니다.(시스템용으로 2GB 할당)

14,000MB / 50MB = 280
  • pm.start_servers : 초기 PHP-FPM 서버 시작 시 몇 개의 프로세스를 시작할지 설정합니다. vCPU 수를 고려하여 8~16개로 설정할 수 있습니다.
  • pm.min_spare_servers : 최소 유휴 프로세스 수를 설정합니다. 일반적으로 vCPU 수의 절반 정도인 4~8개로 설정할 수 있습니다.
  • pm.max_spare_servers : 최대 유휴 프로세스 수를 설정합니다. 초기값으로 vCPU 수와 비슷한 8~16개로 설정할 수 있습니다.
pm = dynamic
pm.max_children = 280
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15

 

참고URL

- PHP Documentation : FastCGI Process Manager(FPM)

 

 

0.00Mb 명령 82.26Mb /usr/sbin/mariadbd 28.86Mb /lib/systemd/systemd-journald 26.60Mb /sbin/multipathd -d -s 20.98Mb /usr/bin/python3 /usr/share/unattended-upgrades/unattended- 업그레이드-종료 --wait-for-signal 20.20Mb /usr/libexec/packagekitd 20.06Mb php-fpm: 마스터 프로세스(/etc/php/8.3/fpm/php-fpm.conf) 18.52Mb /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers 12.68Mb /usr/libexec/udisks2/udisksd 11.85Mb /usr/sbin/ModemManager
 
728x90
반응형