沃梦达 / IT编程 / 服务器 / 正文

Python:统计Apache进程占用的物理内存比

前面介绍过怎么统计系统剩余内存:http://msiyuetian.blog.51cto.com/8637744/1772888下面这个主要是统计Apache进程占用的物理内存我们可以通过以下命令查看Apache有哪些进程及其PID1)ps aux |grep httpd650) this....


前面介绍过怎么统计系统剩余内存:http://msiyuetian.blog.51cto.com/8637744/1772888

下面这个主要是统计Apache进程占用的物理内存


我们可以通过以下命令查看Apache有哪些进程及其PID

1)ps aux |grep httpd

技术分享650) this.width=650;" src="https://oss.womengda.net/upload/getfiles/default/2022/11/8/20221108020721967.jpg" title="1.png" />

2)pidof httpd

技术分享650) this.width=650;" src="https://oss.womengda.net/upload/getfiles/default/2022/11/8/20221108020722287.jpg" title="4.png" />


这些进程所对应的目录都以PID命名临时存放在/proc/目录下,而记录进程的物理内存信息都记录在对应的PID目录下的 status 文件里面(VmRSS),统计VmRSS总和即为Apache所有进程所占物理内存。

技术分享650) this.width=650;" src="https://oss.womengda.net/upload/getfiles/default/2022/11/8/20221108020722481.jpg" title="2.png" />


技术分享650) this.width=650;" src="https://oss.womengda.net/upload/getfiles/default/2022/11/8/20221108020722806.jpg" title="3.png" />


代码如下:

vim httpd.py

#!/usr/bin/env python


import os

from subprocess import Popen, PIPE


def getPid():

    p = Popen([‘pidof‘, ‘httpd‘], stdout=PIPE, stderr=PIPE)

    pids = p.stdout.read().split()

    for i in pids:

        fn = os.path.join(‘/proc/‘,i,‘status‘)

        with open(fn) as fd:

            for line in fd:

                if line.startswith(‘VmRSS‘):

                    http_mem = int(line.split()[1])

                    sum += http_mem

                    break

    return sum


def total_mem(f):

    with open(f) as fd:

        for line in fd:

            if line.startswith(‘MemTotal‘):

                total_mem = int(line.split()[1])

                return total_mem


if __name__ == ‘__main__‘:

    pids = getPid()

    http_mem = parsePidFile(pids)

    total = total_mem(‘/proc/meminfo‘)

    print "Apache memory is: %s KB" % http_mem

    print "Percent: %.2f" % (http_mem/float(total)*100)+‘%‘

代码说明

subprocess 模块可以调用命令 pidof httpd 获取PID,并输出返回值


验证结果如下:

技术分享650) this.width=650;" src="https://oss.womengda.net/upload/getfiles/default/2022/11/8/20221108020723266.jpg" title="5.png" />


我们可以通过下面方式来多访问几次Apache,查看内存所占比的变化

yum install -y elinks

elinks -dump http://localhost



本文出自 “M四月天” 博客,请务必保留此出处http://msiyuetian.blog.51cto.com/8637744/1787950

原文:http://msiyuetian.blog.51cto.com/8637744/1787950

本文标题为:Python:统计Apache进程占用的物理内存比