目的:计算所有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. Bzoj 3173: [Tjoi2013]最长上升子序列 平衡树,Treap,二分,树的序遍历

    3173: [Tjoi2013]最长上升子序列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1183  Solved: 610[Submit][St ...

  2. Android 自定义View可拖动移动位置及边缘拉伸放大缩小

    一.首先说一下定义这样一个View有什么用?在一些app中,需要设置头像,而用户选择的图片可能是使用摄像头拍摄,也可能是选择的相册里面的图片,总之,这样的图片大小不一,就比如在使用某个聊天软件的时候, ...

  3. GPGPU OpenCL/CUDA 高性能编程的10大注意事项

    转载自:http://hc.csdn.net/contents/content_details?type=1&id=341 1.展开循环 如果提前知道了循环的次数,可以进行循环展开,这样省去了 ...

  4. 记录一次MVC3升级MVC4遇到的问题

    前些天,项目组将项目从mvc3升级至mvc4,完了之后,发现突然涌现出一大堆问题.主要是在前端,Razor引擎升级导致的. Razor是从mvc3开始引入的,用过mvc2的就会知道,Razor用起来确 ...

  5. useradd、passwd、userdel

    useradd是新建用户 userdel -r 是删除用户 passwd是修改密码 groupadd是新建组 groupdel是删除组 useradd yonghu  为添加用户 echo " ...

  6. android 使用intent传递参数实现乘法计算

    主界面上是两个EditText和一个按钮.用于输入两个数字参数. calcute.xml: <?xml version="1.0" encoding="utf-8& ...

  7. 设置button 不可被点击

    mGetCode.setEnabled(false);//不可被点击 mGetCode.setEnabled(true);//可被点击 bt.setClickable(true);//设置点击为tru ...

  8. [C#] 常用工具类——应用程序属性信息访问类

    using System; using System.Collections.Generic; using System.Text; using System.Reflection; namespac ...

  9. C语言之void类型及void指针 分类: C/C++ 2015-07-13 11:24 8人阅读 评论(0) 收藏

    原文网址:http://www.cnblogs.com/pengyingh/articles/2407267.html 1.概述 许多初学者对C/C 语言中的void及void指针类型不甚理解,因此在 ...

  10. Mac上pod install一直停住的解决办法

    pod install一直停住的解决办法 在/Users/XXX/.cocoapods/repos下 git clone https://github.com/CocoaPods/Specs.git ...