Я хочу измерить использование памяти моего сервера Apache. Могу ли я использовать команду pmap / ps и передать все идентификаторы процессов httpd и принять это за общее использование?
В большей части блога они предполагают, что команда ps дает правильный результат для примера программы, но не для apache.
В pmap
pmap PID1 PID2 ....
Кажется, что pmap дает больше информации, чем просто использование оперативной памяти. Есть ли какая-нибудь команда в Unix / Perl, с помощью которой я могу получить правильную информацию об использовании памяти?
Мой сценарий перехода на Python
https://raw.github.com/pixelb/scripts/master/scripts/ps_mem.py
просто запустите ps_mem.py, и он сообщит вам, сколько места httpd использует для всех процессов, которые он разветвил. Вы не можете суммировать вывод ps, используя как память res, потому что большая часть памяти, которая, по его словам, используется процессом, распределяется между процессами. Так, например, на одном из моих серверов образец процессов apache
apache 6799 0.2 0.7 590052 63064 ? S 12:56 0:07 /usr/sbin/httpd
apache 6802 0.3 0.7 589084 60804 ? S 12:57 0:08 /usr/sbin/httpd
apache 6803 0.2 0.7 588004 59748 ? S 12:57 0:05 /usr/sbin/httpd
Можно подумать, что каждый процесс использует около 60 мегабайт оперативной памяти. У меня их 100 открытых, так что можно сказать, что он использует 600 мегабайт барана.
Ну реальная память 365 из вывода скрипта
286.6 MiB + 79.3 MiB = 365.9 MiB httpd (38)