windows进程监控内存及数据可视化

一、windows监控进程

  1. 目的:在windows下监控某一个进程5天的内存使用,查看是否有内存泄露

  2. 实现:考虑过各种工具,最后选择批处理实现

  3. 代码:
    代码实现监控redis进程,每隔1分钟将tasklist查到的内存使用情况存入redis.txt文件中

    @echo off
    
    rem 这段用来将脚本放入后台运行
    if "%1"=="hide" goto CmdBegin
    start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
    :CmdBegin
    
    rem 这段用来从tasklist中查找到redis-server.exe这行,然后提取第5列,分隔符是空格,最后将日期和时间及查到的内存数输出到redis.txt文件中
    :top
    for /f "tokens=5 delims= " %%a in ('tasklist /nh ^|findstr /i redis-server.exe') do echo %date% %time% %%a >> redis.txt
    
    rem 使用ping来实现每隔60s
    ping -n 60 127.0.0.1>nul
    goto top
    
  4. 得到的数据

    2019/05/23 周四 11:27:44.44 381,064 
    2019/05/23 周四 11:28:43.98 401,224 
    2019/05/23 周四 11:29:43.53 413,752 
    2019/05/23 周四 11:30:43.06 378,804 
    ...
    

二、数据图表展示

  1. 数据展示
    将获得的数据展示出来,使用python的panda库清洗和格式化数据,最终用matplotlib来展示数据

    import numpy as np
    from pandas import Series,DataFrame
    import pandas as pd
    import matplotlib.pyplot as plt
    # 设置显示样式
    plt.style.use("ggplot")
    # 设置中文编码
    plt.rcParams["font.sans-serif"] = "KaiTi"
    # 读取txt文件,header=None表示没有表头,header=0表示第一行是表头,encoding编码,sep是分隔符 r'\s+'表示空白符
    data=pd.read_table("redis.txt",header=None, encoding='gbk',sep=r'\s+')
    # 删除索引为1的列,drop默认删除行,axis = 1修改为删除列
    data=data.drop(1, axis = 1)
    # 将索引为0和2的两列连接一起
    data['日期时间']=data[[0,2]].apply(lambda x:' '.join(x), axis=1)
    # 删除索引为0(日期)和索引为2(时间)的两列
    data=data.drop(0, axis = 1)
    data=data.drop(2, axis = 1)
    # 将日期时间格式化
    data['日期时间']=pd.to_datetime(data['日期时间'], errors='coerce')
    # 对数字进行格式化,删除中间的,号
    data[3]=data[[3]].apply(lambda x: x.str.replace(',', ''),axis=1)
    # 将数字格式化,遇到不能转的,有三种选项,raise 报错(默认) ignore 忽视 coerce 转成NAN非数字 NAT非时间
    data[3]=pd.to_numeric(data[3], errors='coerce')
    # 将KB转成MB
    data[3]=data[[3]].apply(lambda x: x/1024, axis=1)
    plt.plot(data['日期时间'], data[3])
    plt.title('redis进程内存使用')
    plt.xlabel('时间')
    plt.ylabel('内存(M)')
    plt.show()
    

    注:数据中有一段数据并没有提取到内存数,只有K,查找原因中…

  2. 最终结果
    在这里插入图片描述

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aabond

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值