目的:计算所有apache进程占用的内存大小以及占物理内存的比例:
思路:利用系统中/proc/meminfo的现有数据进行统计
1、pidof列出服务对应进程的PID
[root@yangliheng ~]# pidof httpd
          
2、读取PID对应的文件/proc/5355/status(以PID5355为例),遍历得到这个进程对应的占用内存(VmRSS对应的)
[root@yangliheng ~]# cat /proc//status
Name:httpd
State:S (sleeping)
Tgid:
Pid:
PPid:
VmHWM: kB
VmRSS: kB
3、查看/proc/meminfo得到系统的总物理内存
4、就算将Apache 对应所有进程的内存相加,与系统总物理内存相比得到所占比例
$cat /proc/meminfo
MemTotal: kB //总内存
 
#!/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()
return pids def paresPidFile(pids):
sum =0
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 = paresPidFile(pids)
total = total_mem('/proc/meminfo')
print"Apache memory is: %s KB"% http_mem
print "Percent: %.2f%%"%(http_mem/float(total)*100)

  

 
 

python 计算apache进程占用的内存大小以及占物理内存的比例的更多相关文章

  1. linux下查询进程占用的内存方法总结

    linux下查询进程占用的内存方法总结,假设现在有一个「php-cgi」的进程 ,进程id为「25282」.现在想要查询该进程占用的内存大小.linux命令行下有很多的工具进行查看,现总结常见的几种方 ...

  2. android 获取Bitmap位图所占用的内存大小

    今天在看Universal-Image-Loader源码的时候,在对图片的超过用户在所设的阈值的时候,系统会调用GC将LinkHashMap比较靠底层的图片引用去掉,这里涉及到一个技术单个图片的文图大 ...

  3. 精确度量Linux下进程占用多少内存的方法

    背景 在Linux中,要了解进程的信息,莫过于从 proc 文件系统中入手去看. proc的详细介绍,可以参考内核文档的解读,里面有很多内容 yum install -y kernel-doc cat ...

  4. Java程序占用实际内存大小

    很多人错误的认为运行Java程序时使用-Xmx和-Xms参数指定的就是程序将会占用的内存,但是这实际上只是Java堆对象将会占用的内存.堆只是影响Java程序占用内存数量的一个因素.要更好的理解你的J ...

  5. 查看w3wp进程占用的内存及.NET内存泄露,死锁分析

    一 基础知识 在分析之前,先上一张图: 从上面可以看到,这个w3wp进程占用了376M内存,启动了54个线程. 在使用windbg查看之前,看到的进程含有 *32 字样,意思是在64位机器上已32位方 ...

  6. 查看w3wp进程占用的内存及.NET内存泄露,死锁分析--转载

    一 基础知识 在分析之前,先上一张图: 从上面可以看到,这个w3wp进程占用了376M内存,启动了54个线程. 在使用windbg查看之前,看到的进程含有 *32 字样,意思是在64位机器上已32位方 ...

  7. 获取JAVA对象占用的内存大小

    介绍两种获取JAVA对象内存大小的方法. 第一种:Instrumentation 简介: 使用java.lang.instrument 的Instrumentation来获取一个对象的内存大小.利用I ...

  8. c# 获取某进程占用的内存(任务管理器显示的内存一致)

    最近写了看门狗的winform程序,需求要求显示监测的进程所占的内存大小 找了好几个方法,都和任务管理器显示的内存不一致 最后找到了一个解决方法 PerformanceCounter pf1 = ne ...

  9. python开发: linux进程占用物理内存

    #!/usr/bin/env python #-*- coding:utf-8 -*- ''' 统计linux进程占用的物理内存 ''' import os import sys import sub ...

随机推荐

  1. map/reduce实现 排序

    import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.co ...

  2. Kbuild文件

    3 Kbuild文件 大部分内核中的Makefile都是使用Kbuild组织结构的Kbuild Makefile.这章将介绍Kbuild Makefile的语法. 对于Kbuild文件名来讲,Kbui ...

  3. 系统内存和CPU管理、监控

    本博文的主要内容有 .系统内存管理.监控:vmstat和free -mt .系统CPU管理.监控:sar -u.mpstat.uptime linux系统内存和CPU是在系统运行的过程中不断消耗的资源 ...

  4. hdoj 1269 迷宫城堡【scc基础题目】

    迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  5. iOS中二维码的生成与使用(入门篇)

    这里简单总结一下关于二维码的扫描与生成,用的是原生的AVFoundation框架,其实这个框架目前功能还是够用的,不过这里推荐一个二维码扫描的第三方(face++),网址就不贴了,直接度娘就OK,里面 ...

  6. 使用solrj操作solr索引库,solr是lucene服务器

    客户端开发 Solrj 客户端开发 Solrj Solr是搭建好的lucene服务器 当然不可能完全满足一般的业务需求 可能 要针对各种的架构和业务调整 这里就需要用到Solrj了 Solrj是Sol ...

  7. Block使用变量,让你的程序看起来清晰!

    <span style="font-size:24px;">为什么要使用block变量呢? 由于当我们的程序比較繁杂的时候,我们在一个函数中要调用一个函数,还须要在外边 ...

  8. raft 分布式协议 -- mongodb

    http://www.mongoing.com/presentations/webinar-raft-consensus-in-mongodb#rd

  9. TableView的优化

    一:什么是TableView的优化以及为什么要优化 1)CPU(中央处理器)和GPU(图形处理器):CPU主要从事逻辑计算的一些工作:GPU主要从事图形处理方面的工作. 2)CPU和GPU的共同点: ...

  10. 高性能爬虫为什么使用定制DNS客户端?

    DNS 解析是高性能网络爬虫的瓶颈,主要是因为: 1. 由于域名服务的分布式的特性,DNS解析可能需要多次的请求转发,有时需要几秒甚至更长的时间来解析出相应的IP 地址. 2. 现有的标准库对DNS解 ...