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

简介:

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

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


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

1)ps aux |grep httpd

wKiom1dbwryCWsD4AABsdPFo8v0358.png

2)pidof httpd

wKiom1dbxePQBZiHAAAMuilGXXs292.png


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

wKiom1dbxCSy8LFUAABAIviJadk120.png


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


验证结果如下:

wKiom1dbzaGQpYIzAAAeAcu3dRs935.png


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

yum install -y elinks

elinks -dump http://localhost





      本文转自M四月天 51CTO博客,原文链接:http://blog.51cto.com/msiyuetian/1787950,如需转载请自行联系原作者



相关文章
|
1月前
麒麟系统mate-indicators进程占用内存过高问题解决
【10月更文挑战第7天】麒麟系统mate-indicators进程占用内存过高问题解决
169 2
|
10天前
|
安全 开发者 Python
Python的内存管理pymalloc
Python的内存管理pymalloc
|
14天前
|
安全 开发者 Python
Python的内存管理pymalloc
Python的内存管理pymalloc
|
15天前
|
监控 Java API
Python是如何实现内存管理的
Python是如何实现内存管理的
|
25天前
|
数据可视化 数据挖掘 Python
Seaborn 库创建吸引人的统计图表
【10月更文挑战第11天】本文介绍了如何使用 Seaborn 库创建多种统计图表,包括散点图、箱线图、直方图、线性回归图、热力图等。通过具体示例和代码,展示了 Seaborn 在数据可视化中的强大功能和灵活性,帮助读者更好地理解和应用这一工具。
36 3
|
1月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
41 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
|
1月前
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
40 3
|
1月前
|
缓存 算法 调度
深入浅出操作系统:从进程管理到内存优化
本文旨在为读者提供一次深入浅出的操作系统之旅。我们将从进程管理的基本概念出发,逐步深入到内存管理的复杂世界,最终探索如何通过实践技巧来优化系统性能。文章将结合理论与实践,通过代码示例,帮助读者更好地理解操作系统的核心机制及其在日常技术工作中的重要性。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往操作系统深层次理解的大门。
|
2月前
|
算法 程序员 Python
程序员必看!Python复杂度分析全攻略,让你的算法设计既快又省内存!
在编程领域,Python以简洁的语法和强大的库支持成为众多程序员的首选语言。然而,性能优化仍是挑战。本文将带你深入了解Python算法的复杂度分析,从时间与空间复杂度入手,分享四大最佳实践:选择合适算法、优化实现、利用Python特性减少空间消耗及定期评估调整,助你写出高效且节省内存的代码,轻松应对各种编程挑战。
41 1
|
1月前
|
数据处理 Python
如何优化Python读取大文件的内存占用与性能
如何优化Python读取大文件的内存占用与性能
114 0