首页 > 系统相关 >Python监控进程资源占用并发送邮件

Python监控进程资源占用并发送邮件

时间:2024-09-04 20:25:06浏览次数:7  
标签:name psutil Python 占用 list process proc 邮件

项目新特性上线后,有时会因为包含内存泄露的问题导致服务资源被占满,以至于线上服务崩溃。

最简单的方式是对服务期CPU/内存占用进行监测和及时预警。
python中pyutil包是自动化运维常用的工具库之一,可以进行方便获取服务器CPU/内存及进程等相关信息。

安装方法

pip install psutil

检测当前CPU占用百分比

if psutil.cpu_percent(0.01) > 70:
    print('CPU占用超过70%了')

检测当前内存占用百分比

if psutil.virtual_memory().percent > 70:
    print('内存占用超过70%了')

获取top10资源占用进程

def get_top_process(option='mem',n=10,added=True):
    process_list = []
    for proc in psutil.process_iter():
        process_list.append((proc.name(), proc.memory_percent(), proc.cpu_percent(0.01)))

    process_list.sort(key=lambda process_list:process_list[0]) # 按进程名排序

    if added:
        # 累加相同进程名进程资源占用百分比
        process_list = reduce(
            lambda x,y: x+[y] if x==[] or x[-1][0]!=y[0] else x[0:-1]+[(x[-1][0],x[-1][1]+y[1],x[-1][2]+y[2])],
            [[]] + process_list)

    sort_index = 1 if option.lower() == 'mem' else 2  # 排序列,option=mem,按prcess_list第2列(index=1)排序
    # 将process_list按相应列从大到小排序,无累加-------# todo 先累加再排序
    process_list.sort(key=lambda process_list:process_list[2 if sort_index==1 else 1], reverse=True)
    process_list.sort(key=lambda process_list:process_list[sort_index], reverse=True)
    return process_list[0:n]

检测僵尸进程

def check_zombie_process():
    zombie_process_list = []
    for proc in psutil.process_iter():
        if proc.status() == 'zombie':
            zombie_process_list.append(
                (proc.name(), proc.status(), proc.create_time(), proc.memory_percent(), proc.cpu_percent(0.01))
                )
    return zombie_process_list

检测php-fpm进程

def check_single_process(process_name='php-fpm'):
    warn_process_list = []
    for proc in psutil.process_iter():
        if proc.name() == process_name:
            if proc.memory_info().res()/1024/1024 >= int(RES_WARN):
                warn_process_list.append(proc.name(), proc.create_time(), proc.memory_info().res(), proc.connections())
        return warn_process_list

标签:name,psutil,Python,占用,list,process,proc,邮件
From: https://www.cnblogs.com/superhin/p/18397286

相关文章

  • 【Python类型推断】
    在Python中,类型推断是指根据变量所赋的值自动确定变量的数据类型。Python是一种动态类型语言,解释器会在运行时根据赋值操作来推断变量的类型。常见的用于类型推断的方法有type()和isinstance()。例如:num=10print(type(num))#<class'int'>pi=3.14159prin......
  • 基于python+flask框架的校园二手车交易系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育事业的蓬勃发展,校园内的学生群体日益庞大,他们的消费需求也日益多样化。在校园生活中,学生们常常面临着新旧物品更替的需求,尤其......
  • 基于python+flask框架的求职招聘管理系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在当今快速发展的信息化时代,人力资源管理已成为企业核心竞争力的重要组成部分。随着就业市场的日益扩大和求职需求的不断增长,传统的手工或......
  • 基于python+flask框架的医院电子病历管理(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着医疗技术的飞速发展和医疗信息化的不断深入,传统的纸质病历管理模式已难以满足现代医院高效、精准、安全的管理需求。医院电子病历管理......
  • 测试GPU的占用情况
    测试GPU的占用情况文章目录测试GPU的占用情况前言一、测试GPU的占用情况二、耗时统计总结前言本文简单介绍测试GPU占用情况和模型耗时统计的代码。一、测试GPU的占用情况统计脚本tegrastats--interval10>*.txtimportreimportnumpyasnp#定义正则......
  • Codeforces Round 971 (Div. 4) ABCD题详细题解(C++,Python)
    前言:    本文为CodeforcesRound971(Div.4)ABCD题的题解,包含C++,Python语言描述,觉得有帮助或者写的不错可以点个赞    比赛打了没一半突然unrated了就不是很想继续写了,早起写个题解    (之前的div3也没复盘,哎真菜)目录题A:题目大意和解题......
  • AtCoder Beginner Contest 369 题ABCD详细题解--包含解题思路和两种语言(C++,Python)
    前言:    本文为AtCoderBeginnerContest369题ABCD详细题解,包括题目大意,详细的解题思路和两种语言描述,觉的有帮助或者写的不错可以点个赞几天前的比赛拖的有点久了比赛题目连接:Tasks-AtCoderBeginnerContest369目录题A:题目大意和解题思路:代码(C++):......
  • 使用Python模拟TCP/IP协议栈
    1.代码如下importrandomclassApplicationLayer:defsend_data(self,data):print(f"ApplicationLayer:Sendingdata:{data}")returndatadefreceive_data(self,data):print(f"ApplicationLayer:Receiveddata......
  • 【Python基础】数据格式化
    1.1数据的分类(基于维度)根据组织数据时与数据有联系的参数的数量,数据可以分为以下三类。(1)一维数据1.一维数据是具有对等关系的一组线性数据,对应数学中的集合、一维数组。2.在Python中,一维列表、一维元组、一维集合都是一维数据。3.可通过逗号、空格等符号分隔一维......
  • 使用python虚拟环境相关的一点建议
    1.不要直接使用base虚拟环境为某个项目所用。理由如下:全局依赖:base环境中的包是全局的,所有项目都会共享这些包。如果不同项目需要不同版本的同一个包,可能会导致依赖冲突。版本控制:在base环境中,更新一个包可能会影响其他项目的正常运行。或者删除一个包,也可能对其他项目造成......