Недавно устранял утечки памяти в apache – набрел на интересный скрипт:
Привожу его с моими минимальными правками:
#!/bin/env php
<?php
$apache_proc = 'httpd';
$command = "ps -ef | " .
"grep " . escapeshellarg($apache_proc) . " | " .
"grep -v ^root | " .
"awk '{ print $2 '} | " .
"xargs pmap -d | " .
"grep ^mapped: | " .
"awk '{ print $4 }' ";
exec($command, $processes, $return);
if ($return != 0)
{
echo "Error executing check, status code is $returnn";
exit($return);
}
$avg = array_sum($processes) / count($processes);
foreach( $processes as $proc )
{
printf( "%sn", $proc );
}
echo "n";
printf("Average %s process private memory allocation: %0.2f kbn", $apache_proc, $avg);
После создания файла скрипта делаем его исполняемым (chmod +x) и запускаем:
[root@name bin]# ./memusage 58884K 67936K 64288K 77716K 82300K 79352K 78588K 67740K 77136K 72868K Average httpd process private memory allocation: 72680.80 kb
В результате имеем небольшой удобный скриптик, вместо набора длинной цепочки команд, для просмотра объема памяти, потребляемой процессами apache.