728x90
PHP 메모리 사용량 확인
1. CPU 개수 출력
nproc
4
2. 모든 PHP-FPM 프로세스 정보 출력(php-fpm8.3)
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 프로세스의 메모리 사용량 출력(php-fpm8.3)
- comm : 명령어 (프로세스 이름)
- rss : 실제 메모리 사용량 (Resident Set Size) (KB)
- pmem : 메모리 사용 비율 (Percentage of Memory)
ps -eo comm,rss,pmem --sort=-rss | grep php-fpm
php-fpm8.3 20540 0.5
php-fpm8.3 7748 0.1
php-fpm8.3 7748 0.1
또는
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
더보기
---
가상 메모리 사용량(Virtual Memory Size, VSZ), MB 단위
ps -eo size,pid,user,command --sort -size | 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
5.64 Mb php-fpm: pool www
5.64 Mb php-fpm: pool www
5.50 Mb php-fpm: master process (/etc/php/8.3/fpm/php-fpm.conf)
---
4. PHP-FPM 프로세스의 평균 메모리 사용량을 확인
현재 실행 중인 PHP-FPM 프로세스의 평균 메모리 사용량을 MB 단위로 계산하여 출력
ps -eo rss,comm | grep php-fpm | awk '{ sum += $1 } END { if (NR > 0) print sum / NR / 1024 " MB"; else print "No processes found" }'
11.7305 MB
또는
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
더보기
---
모든 프로세스의 가상 메모리 사용량 출력
ps -eo size,pid,user,command --sort -size | 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
503.91 Mb /usr/sbin/mariadbd
42.70 Mb /usr/bin/redis-sentinel 0.0.0.0:26379 [sentinel]
42.70 Mb /usr/bin/redis-server 0.0.0.0:6379
42.04 Mb /usr/libexec/udisks2/udisksd
33.94 Mb /usr/sbin/ModemManager
26.05 Mb /usr/libexec/packagekitd
25.14 Mb /usr/libexec/polkitd --no-debug
19.19 Mb (sd-pam)
19.02 Mb /sbin/init
---
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
'리눅스' 카테고리의 다른 글
[draft] NGINX 저장소의 만료된 GPG 키 갱신 방법 (1) | 2024.10.17 |
---|---|
[draft] PECL 구성에서 기본 채널 URL을 업데이트하는 방법 (0) | 2024.10.17 |
[draft] 우분투에서 고정 IP 주소를 설정하는 방법 (1) | 2024.10.15 |
[draft] Redis의 주요 구성 방법 (0) | 2024.10.15 |
[draft] 리눅스에서 LISTEN 포트를 확인하는 방법 (0) | 2024.10.15 |