我想要弄清楚我的 Apache Web 服务器当前使用了多少 RAM 以及允许使用多少 RAM。
Linux 中的 ps 命令可以提供每个子进程的内存使用情况:
ps aux | grep apache2
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1130 0.0 0.1 149080 10600 ? Ss 12:36 0:00 /usr/sbin/apache2 -k start
www-data 2051 0.0 0.3 163608 23592 ? S 16:46 0:00 /usr/sbin/apache2 -k start
www-data 2506 0.0 0.1 149376 7952 ? S 16:47 0:00 /usr/sbin/apache2 -k start
www-data 5149 0.0 0.1 149416 7980 ? S 16:49 0:00 /usr/sbin/apache2 -k start
www-data 5175 0.0 0.1 149368 7876 ? S 16:49 0:00 /usr/sbin/apache2 -k start
www-data 10212 0.0 0.1 149368 7848 ? S 16:53 0:00 /usr/sbin/apache2 -k start
www-data 19114 0.0 0.1 149368 7904 ? S 17:01 0:00 /usr/sbin/apache2 -k start
www-data 19138 0.0 0.1 150768 11856 ? S 17:01 0:00 /usr/sbin/apache2 -k start
www-data 20592 0.0 0.1 149428 8092 ? S 16:35 0:00 /usr/sbin/apache2 -k start
www-data 21336 0.0 0.1 149368 7808 ? S 17:03 0:00 /usr/sbin/apache2 -k start
www-data 21375 0.0 0.1 149432 7916 ? S 17:03 0:00 /usr/sbin/apache2 -k start
1000 26458 0.0 0.0 8112 896 pts/6 S+ 17:07 0:00 grep apache2
www-data 30848 0.0 0.1 149396 8044 ? S 16:43 0:00 /usr/sbin/apache2 -k start
我知道我有多少 RAM:
/proc $ cat meminfo
MemTotal: 6113156 kB
但我正在寻找的是一个数字,可以显示所有 apache 生成的进程总共使用了多少 RAM(内存)。
答案1
TOTAL=0;for MEM in `ps -U www-data -o rss | grep -v RSS`; do TOTAL=$(($TOTAL+$MEM)); done;echo $TOTAL
答案2
看看check-httpd-limits
项目,来自项目页面:
check_httpd_limits.pl 比较正在运行的 Apache httpd 进程的大小、配置的 prefork / worker / event MPM 限制以及服务器的可用内存。如果配置的限制超出了服务器的可用内存,则脚本会退出并显示警告(或错误消息)。
答案3
如果您正在寻找每个 Apache 进程的平均 RAM 使用量。
ps -ylC apache2 --sort:rss | awk '{sum+=$8; ++n} END {print "Tot="sum"("n")";print "Avg="sum"/"n"="sum/n/1024"MB"}'