zoukankan      html  css  js  c++  java
  • python定时脚本判断服务器内存

    经常我们会发现服务器跑着跑着内存使用率达到了百分之八九十,或者有时候直接挂掉,在我们还没定位是哪块代码有问题导致内存占用很大的时候,可以先写个定时脚本,当服务器内存使用率达到一定值的时候,就重启一起服务,释放内存。下面这个定时脚本是每隔10s去判断一下机器的内存,假如内存使用率超过10%,就重启一下进程(正常情况下内存使用率是%5左右,所以就定了个10%),代码如下面蓝色部分所示。然后修改脚本权限,用于命令让它在后头不挂断运行:nohup python -u restart.py >nohup.out 2>&1 &

    #! /usr/bin/env python
    # -*- coding:utf-8 -*-

    import os
    import time
    import datetime
    import sched
    import datetime
    import psutil

    #schedule_time = sched.scheduler(time.time,time.sleep)

    schedule = sched.scheduler(time.time,time.sleep)

    #def perform_command_time(cmd,inc):
    #   schedule_time.enter(inc,0,perform_command_time,(cmd,inc))
    #   os.system(cmd)

    def perform_command(cmd,inc):
        schedule.enter(inc,0,perform_command,(cmd,inc))
        memory = psutil.virtual_memory()
        percent = memory.percent
        if percent < 10:
            now = datetime.datetime.now()
            print now
            print percent
        if percent >=10:
            now = datetime.datetime.now()
            print now
            print percent
            os.system('ps -ef | grep supervisord | grep -v grep | cut -c 9-15 | xargs kill -9')
            os.system('ps -ef | grep ncq.dnsquery_monitor0_check | grep -v grep | cut -c 9-15 | xargs kill -9')
            time.sleep(5)
            os.system('supervisord -c /opt/trunk/conf.d/supervisord.conf')
            os.system('supervisorctl -uxxx -pxxx restart all')
            time.sleep(5)
    #def timming_exe(cmd,inc=60):
    #    schedule_time.enter(inc,0,perform_command_time,(cmd,inc))
    #    schedule_time.run()

    def restart_exe(cmd,inc=5):
        schedule.enter(inc,0,perform_command,(cmd,inc))
        schedule.run()

    #print("show date after 10 seconds:")
    #timming_exe('date',10)
    print("restart celery----------->")
    restart_exe('supervisorctl -uxxx -pxxx restart all',10)
    #restart_exe('df -h',12)

  • 相关阅读:
    理解jquery的$.extend()、$.fn和$.fn.extend()
    jquery中的$.fn的用法
    【转】区别 (function($){...})(jQuery)、$(function(){ })和$.fn
    linux常用目录和文件解析
    Linux通配符与正则表达式
    CentOS6配置邮件发送
    svn简单上传下载文件命令
    CentOS6源码安装zabbix服务器
    搭建zabbix服务器常见问题解析处理
    CentOS6安装Zabbix(RPM包)
  • 原文地址:https://www.cnblogs.com/forward-wang/p/9152156.html
Copyright © 2011-2022 走看看