检查单个 PHP-FPM 进程的平均内存使用情况

检查单个 PHP-FPM 进程的平均内存使用情况

我尝试使用以下命令来检查单个 PHP-FPM 进程的平均内存使用情况

ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'

我收到一个错误awk: cmd. line:1: fatal: division by zero attempted

这个命令

total=0; for i in `ps -C php-fpm -o rss=`; do total=$(($total+$i)); done; echo "Memory usage: $total kb";
Memory usage: 0 kb

ps -ef | grep php
root       9435      1  0 11:42 ?        00:00:00 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
somename+   9438   9435  0 11:42 ?        00:00:00 php-fpm: pool somename-1
somename+   9439   9435  0 11:42 ?        00:00:01 php-fpm: pool somename-1 
...
...

答案1

为了使ps选项-C匹配,您需要确保您正在寻找正确的字符串 - 不是默认使用 eg 显示的扩展命令名称-ef,而是c选项与 eg 结合显示的内容ax

比较:

% ps -ef | grep '[f]'pm
www-data  3014  3714  2 19:09 ?        00:01:16 php-fpm: pool www
root      3714     1  0 Srp03 ?        00:00:32 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
www-data 10644  3714  2 18:14 ?        00:02:35 php-fpm: pool www
www-data 18448  3714  2 19:42 ?        00:00:28 php-fpm: pool www

% ps axc | grep '[f]'pm
 3014 ?        S      1:17 php-fpm7.0
 3714 ?        Ss     0:32 php-fpm7.0
10644 ?        S      2:35 php-fpm7.0
18448 ?        S      0:28 php-fpm7.0

在此示例中,可匹配的字符串-Cphp-fpm7.0

% ps -C php-fpm7.0 -o rss=
32516
65952
61468
61012

答案2

我不知道在哪里找到它,但它确实有效!

ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }' | grep php-fpm

在此处输入图片描述

答案3

对于在 Alpine Linux 上使用,此命令基于回答来自 Marc Garcia

ps -T -o rss,comm,pid,args | awk '{ hr=$1 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }' | grep php-fpm

在此处输入图片描述

相关内容