码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-06-12 00:32:26      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:python   apache   memory   


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

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


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

1)ps aux |grep httpd

技术分享

2)pidof httpd

技术分享


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

技术分享


技术分享


代码如下:

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,并输出返回值


验证结果如下:

技术分享


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

yum install -y elinks

elinks -dump http://localhost




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

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

标签:python   apache   memory   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!