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

前面介绍过怎么统计系统剩余内存: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

时间: 2024-12-20 18:55:54

Python:统计Apache进程占用的物理内存比的相关文章

统计apache进程占用的物理内存

[[email protected] ~]# ps aux | grep httpd root     13698  0.0  0.0 185628  4356 ?        Ss   17:12   0:00 /usr/sbin/httpd apache   13705  0.3  0.1 293504 27340 ?        S    17:12   0:00 /usr/sbin/httpd apache   13706  0.3  0.1 293504 27324 ?      

python编程实例-统计apache进程占用的物理内存

1 #!/usr/bin/env python 2 3 import os 4 from subprocess import PIPE,Popen 5 6 def getPids(): 7 p = Popen(['pidof','httpd'],stdout=PIPE,stderr=PIPE) 8 pids = p.stdout.read().split() 9 return pids 10 11 def parsePidFile(pids): 12 http_sum = 0 13 for i

python统计apache、nginx访问日志IP访问次数并且排序(显示前20条)

前言:python统计apache.nginx访问日志IP访问次数并且排序(显示前20条).其实用awk+sort等命令可以实现,用awk数组也可以实现,这里只是用python尝试下. apache脚本: ips = {} with open("/root/mail_access_log-20180629") as fh:     for line in fh:         ip = line.split(" ")[0]         if 6 < le

linux下如何获取某一进程占用的物理内存和虚拟内存

首先,ps -A查看你所查看进程的进程号 ps -A 加入进程号为pid 那么使用如下脚本,可以打印该进程使用的虚拟内存和物理内存: [email protected]:/mnt/mtd# cat rss.sh #!/bin/sh while true do  cat /proc/pid/stat | awk -F" " '{print "virt:"$23}' cat /proc/pid/stat | awk -F" " '{print &qu

Linux中查看进程占用内存和系统资源情况的命令

用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情况... 还有一种办法是 ps -ef | sort -k7 ,将进程按运行时间排序,看哪个进程消耗的cpu时间最多. top: 主要参数 d:指定更新的间隔,以秒计算. q:没有任何延迟的更新.如果使用者有超级用户,则top命令将会以最高的优先序执行. c:显示进程完整的路径与名称. S:累积模式,

获取进程占用的内存

参考url: https://blog.csdn.net/fw0124/article/details/6367360/ https://processhacker.sourceforge.io/downloads.php https://technet.microsoft.com/zh-cn/ms684903(v=vs.90) https://docs.microsoft.com/en-us/windows/desktop/api/MemoryApi/nf-memoryapi-queryvir

查看进程占用的内存情况

可以直接使用top命令后,查看%MEM的内容.可以选择按进程查看或者按用户查看,如想查看java用户的进程内存使用情况的话可以使用如下的命令: (1)top top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 可以直接使用top命令后,查看%MEM的内容.可以选择按进程查看或者按用户查看,如想查看tomcat用户的进程内存使用情况的话可以使用如下的命令: $ top -u tomcat 内容解释: PID:进程的ID    US

Linux下如何查看哪些进程占用的CPU内存资源最多

linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合: ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head linux下获取占用内存资源最多的10个进程,可以使用如下命令组合: ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head 命令组合解析(针对CPU的,MEN也同样道理): ps aux|head -1;ps aux|grep -v PID|sort -rn -k

Apache服务器httpd.exe进程占用cpu超过50%的解决方法

httpd.exe进程占用cpu超过50%,关闭掉Apache服务,cpu应用率立刻下降到0.  重新启动Apache又出现占用cpu高的情况.  原因是:httpd.exe和防火墙配置有冲突. 解决方法如下: 1.网上邻居->本地链接->属性->internet协议(TCP/IP)->属性->高级->wins标签->去掉起用LMhosts查询前的勾. 2.控制面版->windows防火墙->高级标签->本地链接设置->服务的标签里勾选安全