返回顶部
首页 > 资讯 > 后端开发 > Python >python统计httpd 进程的内存占
  • 896
分享到

python统计httpd 进程的内存占

进程内存python 2023-01-31 02:01:35 896人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

本文结构:介绍用命令行如何统计内存占用百分比介绍用python 如何通过读取进程文件,统计进程的内存总大小,然后计算占系统内存的百分比第一部分:在linux 下,统计apache 进程的内存使用百分比,有很多方法:使用命令将所有apache


本文结构:

  1. 介绍用命令行如何统计内存占用百分比

  2. 介绍用python 如何通过读取进程文件,统计进程的内存总大小,然后计算占系统内存的百分比


第一部分:

linux 下,统计apache 进程的内存使用百分比,有很多方法:

使用命令将所有apache 的进程进行统计,然后相加,然后和系统的物理内存相除,求百分比。

1. 例如,用"ps   -e "命令就可以看到所有进程的详细信息:

wKiom1gIz-6xNeagAAB5e528rcA370.png如图,"ps   aux" 命令输出的第六个字段就是某个进程所占的物理内存,单位是KB.然后就可以将需要的apache 进程过滤出来,统计。


最后,用free 就可以看到系统的总内存:

wKiom1gI0TjiGyz2AAA15CrGyes213.png


第二部分:

2. 如果使用Python 那么可以怎么实现?可以通过读取文件,获取各个apache 进程的VmRSS(物理内存)大小,以及系统的总内存。


2.1 通过什么文件查看进程占用内存的信息?

在"/proc" 目录下,那些数字目录,就是代表系统中的一个进程号的目录,该进程的状态都在这个目录下:

wKiom1gI0iWRNq8XAADp0YnK0bs487.png

例如进入29845进程的目录,29845 这个进程的状态信息都可以在status 这个文件查看:

wKiom1gI1aLBgfa9AABSQ8hoH3Y935.png

然后,打开/proc/29845/status 文件:

wKioL1gI1m6A5a1TAACBMfS9Fn4576.png

如上图,VmRSS 这行就是内存大小。


2.2 如何获取所有apache 的进程id号?

因为apache 通常都会fork 很多的子进程,这些子进程都会占用内存。linux下有这样一个命令"pidof".如果想查看系统里所有Httpd 进程的pid 号,可以执行"pidof  httpd", 发现它和"ps aux|grep httpd" 命令统计的pid号是一样的:

wKiom1gI2O2h1ON1AACzD7aK5_0445.png

2.3 知道了apache 的pid 号,还有在什么文件查看内存使用情况,就可以写python 脚本了,先统计所有的pid号:

#!/usr/bin/env  python

"""filename: 10_httpd.py"""

from subprocess  import Popen, PIPE    # 因为要执行linux 的命令,需要使用subprocess 模块


"""定义一个函数,用于获取所有的httpd 的pid号"""
def  getPid():
    p = Popen(["pidof", "httpd"], stdout=PIPE, stderr=PIPE)
    pids = p.stdout.read().split()  #通过管道,读出的结果是字符串,然后用split分割,保存在一个list
    return pids
    
if  __name__ == "__main__" :
    print getPid()

测试一下,执行python 10_httpd.py,输出的结果,如图,输出了全部httpd 的pid 号。

wKioL1gI24iTxjMqAAAfYNv_zSA979.png

继续完善脚本,统计所有httpd 的内存,需要通过/proc/pid/status 文件:

#!/usr/bin/env  python

"""filename: 10_httpd.py"""

from subprocess  import Popen, PIPE    # 因为要执行linux 的命令,需要使用subprocess 模块
import  os

"""定义一个函数,用于获取所有的httpd 的pid号"""
def  getPid():
    p = Popen(["pidof", "httpd"], stdout=PIPE, stderr=PIPE)
    pids = p.stdout.read().split()  #通过管道,读出的结果是字符串,然后用split分割,保存在一个list
    return pids
    

"""
定义一个函数,统计所有httpd 进程的内存
参数:pids 是getPid() 返回的列表
"""
def parsePidFile(pids):
    sum = 0
    for i in pids:
        fn = os.path.join('/proc', i,  'status') #返回status文件的绝对路径
        with open(fn) as fd:
            for line in fd:   
                if line.startswith('VmRSS'):   #遍历文件,找到以"VmRSS"开头的行
                    mem = int(line.split()[1]) #以空格分割,返回第二部分,内存数
                    sum += mem
                    break
    return sum
    
  
"""
函数,打开"/proc/meminfo",获取总的内存
"""
def   total_mem(fn):
    with open(fn) as fd:
        for line in fd:
            if line.startswith("MemTotal"):
                total_memory = int(line.split()[1])
                return total_memory
                
               
if  __name__ == "__main__" :
    pids = getPid()
    sum_mem = parsePidFile(pids)
    total_memory = total_mem("/proc/meminfo") 
    print  "Httpd sum memory is: %s KB" % sum_mem
    print  "Mmeory percent: %.2f%%" % ((sum_mem/float(total_memory))*100)

测试一下,执行 python 10_httpd.py, 输出的结果:

wKioL1gI79HwYwPSAAAdvf7p6Y4432.png



2.4 测试

安装一个elinks 工具,访问apache 看看内存百分比是否会增高,

yum install elinks

用elinks 访问,模拟测试都是在本机进行:

elinks   http://localhost

然后再运行python 10_httpd.py, 输出结果:

wKioL1gI8VvzYgOmAAAdGduZrXs080.png

只要,apache 有访问,占用的内存就会升高。


--结束END--

本文标题: python统计httpd 进程的内存占

本文链接: https://lsjlt.com/news/186986.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python统计httpd 进程的内存占
    本文结构:介绍用命令行如何统计内存占用百分比介绍用python 如何通过读取进程文件,统计进程的内存总大小,然后计算占系统内存的百分比第一部分:在linux 下,统计apache 进程的内存使用百分比,有很多方法:使用命令将所有apache...
    99+
    2023-01-31
    进程 内存 python
  • linux查看进程内存占用
    需要知道一台机器上面跑的java程序,各占用了多少内存。 ps -aux | grep xxxUSER        PID %CPU %MEM&nb...
    99+
    2023-01-31
    进程 内存 linux
  • Linux下如何查询进程占用的内存
    小编给大家分享一下Linux下如何查询进程占用的内存,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!linux下查询进程占用的内存方法总结,假设现在有一个「php-...
    99+
    2023-06-05
  • 查找linux占用内存的前3名进程
    来自老男孩教育每日一题:http://lidao.blog.51cto.com/3388056/1914585查找占用内存的前3名进程(命令大风暴,看谁的命令最精简)参考答案:方法一top,输入大写P,结果按CPU占用降序排序;输入大写M,...
    99+
    2023-01-31
    进程 内存 linux
  • Python:统计系统剩余内存
    #!/usr/bin/pythonwith open('/proc/meminfo') as fd:    for line in fd:        if line.startswith('MemTotal'):            ...
    99+
    2023-01-31
    剩余 内存 系统
  • Linux中怎么查看进程所占内存
    这篇文章主要介绍“Linux中怎么查看进程所占内存”,在日常操作中,相信很多人在Linux中怎么查看进程所占内存问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux中怎么查看进程所占内存”的疑惑有所帮助!...
    99+
    2023-06-28
  • 如何解决win8系统进程占据大量内存问题
    这篇文章将为大家详细讲解有关如何解决win8系统进程占据大量内存问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先右击此电脑,并直接打开“管理”。按序点击打开:“服务和应用程序-服务”,直接找到“Su...
    99+
    2023-06-27
  • 排查解决Java进程占用内存过高
    排查解决Java进程占用内存过高 1 在项目部署运行之前1 检查JVM参数设置2 检查代码逻辑3 使用内存分析工具4 检查线程5 调整应用程序的设计7 调整硬件资源 2 在项目部署运行之后 JVM图片来源 1 在项目部署运...
    99+
    2023-08-24
    JVM JVM内存模型 Java GC Java JVM Java 内存分析
  • Python 中怎么优化程序占用的内存
    今天就跟大家聊聊有关Python 中怎么优化程序占用的内存,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。假设我现在有一个字典是这样的:animal = {'...
    99+
    2023-06-16
  • python清除函数占用的内存
    python升级到2.7.13 函数执行的结尾加上这个即可 for x in locals().keys():      del locals()[x] gc.collect() 原理是,locals()会列出当前所有...
    99+
    2023-01-31
    函数 内存 python
  • 如何优化Python占用的内存
    概述 如果程序处理的数据比较多、比较复杂,那么在程序运行的时候,会占用大量的内存,当内存占用到达一定的数值,程序就有可能被操作系统终止,特别是在限制程序所使用的内存大小的场景,更容易发生问题。下面我就给出几个优化Python占用内存的几个...
    99+
    2023-01-31
    内存 Python
  • MacOS怎么查看进程占用内存是多少
    一、背景 在Linux下可以使用 free 命令来方便的查看内存占用情况,如 free -g、free -m等,但MacOS下没有这个命令。 既然如此,那么MacOS里是否有类似的工具呢? 而我们又该如何查看整个PC的内存占用情况,及指定进...
    99+
    2023-08-20
    macos
  • linux怎么查看各个进程的内存占用情况
    在Linux系统中,可以使用以下命令来查看各个进程的内存占用情况:1. `top`命令:在终端中输入`top`命令可以实时查看系统的...
    99+
    2023-09-13
    Linux
  • Linux 查看进程和线程CPU和内存占用情况
    文章目录 Linux 查看进程有哪些线程Linux 查看程序内存占用情况 top和free等命令Linux 查看进程、线程数量 Linux 查看进程有哪些线程 linux 下查看进程内的线...
    99+
    2023-09-03
    linux 服务器 运维
  • Python实现读取Linux系统的CPU以及内存占用
    直接贴代码 import subprocess def get_system_stats(): #de().strip() memory_result = subprocess.check_outpu...
    99+
    2023-05-20
    Python读取Linux系统CPU Python读取系统CPU Python读取内存占用
  • Python如何查看程序内存占用情况
    目录查看程序内存占用情况python查看内存使用查看程序内存占用情况 flyfishpsutil 这里用在查看内存占用情况memory_profiler输出每一行代码增减的内存 安装...
    99+
    2024-04-02
  • Python怎么查看程序内存占用情况
    今天小编给大家分享一下Python怎么查看程序内存占用情况的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。查看程序内存占用情况...
    99+
    2023-06-30
  • Shell脚本查看进程内存真实占用情况
    #!/bin/bash #****************************************************************# # ScriptName: pm # A...
    99+
    2022-06-04
    脚本 进程 内存
  • linux怎么查看各个进程内存占用情况
    在Linux系统中,可以使用以下命令来查看各个进程的内存占用情况:1. top命令:在终端中输入top命令,然后按下shift+m键...
    99+
    2023-10-09
    linux
  • Java进程内存占用过高,排查解决方法
    Java进程内存占用过高,排查解决方法 在Java应用程序开发过程中,我们经常会遇到Java进程占用内存过高的问题。这可能会导致系统性能下降、应用程序崩溃甚至无法启动。本文将介绍一些常见的排查和解决方...
    99+
    2023-10-20
    java 开发语言 Java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作