![检查单个 PHP-FPM 进程的平均内存使用情况](https://linux22.com/image/707802/%E6%A3%80%E6%9F%A5%E5%8D%95%E4%B8%AA%20PHP-FPM%20%E8%BF%9B%E7%A8%8B%E7%9A%84%E5%B9%B3%E5%9D%87%E5%86%85%E5%AD%98%E4%BD%BF%E7%94%A8%E6%83%85%E5%86%B5.png)
我尝试使用以下命令来检查单个 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
在此示例中,可匹配的字符串-C
是php-fpm7.0
:
% ps -C php-fpm7.0 -o rss=
32516
65952
61468
61012
答案2
答案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