如何在linux中监控php的内存使用情况?

DEz*_*zra 18 php memory valgrind

我使用了valgrinds massif工具来监控过去的内存使用情况.

有谁知道如何捕获在linux lighttpd服务器上生成的php进程的内存使用?

我发现Valgrind无法附加到预先运行的进程(我之前不会知道php进程的PID)

我只看到lighttpd的内存使用情况,而不是lighttpd cgi模块生成的PHP进程.

提前致谢.

scr*_*gar 15

PHP有它自己的内存测试功能,我不知道这对你有用,但如果你只是想记录它你可以使用:http: //php.net/manual/en/function.memory-get-峰usage.php

    echo "Using ", memory_get_peak_usage(1), " bytes of ram.";
Run Code Online (Sandbox Code Playgroud)

  • 添加布尔值true作为memory_get_peak_usage(true)中的第一个参数也将返回PHP进程的内存. (3认同)
  • 这是仅用于脚本的内存使用,还是包括php进程的内存使用?另外,如果正在运行多个脚本,则很难在任何时刻获得峰值使用率。 (2认同)

Pal*_*alm 8

你不能使用'ps'工具吗?

$ ps -F -C php-cgi

UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
http     10794 10786  0  4073   228   0 Jun09 ?        00:00:00 /usr/bin/php-cgi
http     10795 10794  0  4073    28   0 Jun09 ?        00:00:00 /usr/bin/php-cgi
http     10796 10786  0  4073   228   0 Jun09 ?        00:00:00 /usr/bin/php-cgi
http     10797 10796  0  4613  3544   0 Jun09 ?        00:00:00 /usr/bin/php-cgi
...
Run Code Online (Sandbox Code Playgroud)

RSS是实际内存(驻留集)大小(以KB为单位).

在bash中总结一下(有点生疏抱歉)

#!/bin/bash

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

# Output: Memory usage: 4540 kb
Run Code Online (Sandbox Code Playgroud)

一个班轮:

total=0; for i in `ps -C php-cgi -o rss=`; do total=$(($total+$i)); done; echo "Memory usage: $total kb";
Run Code Online (Sandbox Code Playgroud)

我知道ps中内存部分的可靠性受到了质疑,但至少可以让你了解它的用法.