[转] 写个软件来防止服务器网站 CPU 百分百

问题:

大概每隔两个星期左右,秋色园上服务器就会来一次 CPU 百分百,由于问题发生的概率极低,要它重现也难,所以只能意淫是内存太少的原故。以前出现,远程上去结束掉进程,就正常了, 悲剧的是最近秋色园 VPS 不知啥原因,经常远程不上去, 最后转转折折只能进 VPS 管理后台重启。要遇上 CPU 百分百,又是需要机缘,所以一旦发生和遇到解决的时间差度大,就会造成服务器长时间打不开,后果大伙都懂的。。。

解决:

方法一:设置应用池CPU策略,达到N的时候自动回收进程(不实用,排除)

因为更新网站 dll 时,偶尔有顺时达到100%,可能就1-2秒,可能会导致回收到,如果再有偶尔,就会造成死循环了。

方法二:写个软件放上去,监控cpu如果持续1分钟,直接 kill 掉进程。(就这么招了。。。

花了点时间,写了下代码,扔上去了,哟省事了。。。。

新建一个控制台。。。代码如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Diagnostics;

namespace IISCpuForServer
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("监控IIS CPU w3wp 进程中,若100%,而自动结束该进程...");
            Thread thread = new Thread(new ThreadStart(Run));
            thread.IsBackground = true;
            thread.Start();
            Console.Read();
        }
        static void Run()
        {
            try
            {
                while (true)
                {
                    Process[] procs = Process.GetProcessesByName("w3wp");//读取网站的进程
                    if (procs != null && procs.Length > 0)
                    {

foreach (Process pro in procs)
                        {
                            if (!pro.HasExited)
                            {
                                CheckPro(pro);
                            }
                        }
                    }
                    Thread.Sleep(TimeSpan.FromMinutes(5));//5分钟来一次。
                }
            }
            catch (Exception err)
            {
                Console.WriteLine(err.Message);
            }
        }
        static void CheckPro(Process pro)
        {
            int s = 0;//60秒。
            int killTimes = 0;
            //间隔时间(毫秒)
            int interval = 1000;
            //上次记录的CPU时间
            TimeSpan prevCpuTime = TimeSpan.Zero;
            while (true)
            {
                //当前时间
                TimeSpan curTime = pro.TotalProcessorTime;
                //间隔时间内的CPU运行时间除以逻辑CPU数量
                double value = (curTime - prevCpuTime).TotalMilliseconds / interval / Environment.ProcessorCount * 100;
                prevCpuTime = curTime;

if (s > 0)
                {
                    if (value > 90 && value < 100)//cpu连续超过90% 50秒就杀。
                    {
                        killTimes++;
                        if (killTimes > 50)
                        {
                            Console.WriteLine(pro.Id + " 长期高CPU,秒杀...");
                            pro.Kill();
                            Thread.Sleep(TimeSpan.FromMinutes(3));
                            return;
                        }
                    }
                    else
                    {
                        killTimes = 0;
                    }
                    if (killTimes > 0)//只有cpu超过90%才打印文字
                    {
                        Console.WriteLine(pro.Id + " CPU:" + value + " -- killtimes:" + killTimes);
                    }
                }
                Thread.Sleep(interval);
                if (s > 59)
                {
                    s = -1;
                    break;
                }
                else
                {
                    s++;
                }
            }
        }

}
}

时间: 2024-10-11 21:29:45

[转] 写个软件来防止服务器网站 CPU 百分百的相关文章

Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案

原文地址:Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案 启用REWRITE的伪静态功能的时候,首页可以访问,而访问内页的时候,就提示:"No input file specified." 原因在于使用的PHP是fast_cgi模式,而在某些情况下,不能正确识别path_info所造成的错误,Wordpress的伪静态也有一样的问题. Wordpress程序默认的.htaccess里面的规则: 1 HTML " data

如何用PHP/MySQL为 iOS App 写一个简单的web服务器(译) PART1

原文:http://www.raywenderlich.com/2941/how-to-write-a-simple-phpmysql-web-service-for-an-ios-app 作为一个iPhone/iPad开发者,能够自己写一个简单的web服务器将是很有用的. 例如,你可能希望在软件启动时显示一些来自服务器的更新,或者在服务器端保存一些用户数据.除了你的想象力,没有什么能限制你了. 在第一篇中,我们将会一步一步的建立一个web服务器,基于promo code system(促销码系

301跳转:IIS服务器网站整站301永久重定向设置方法(阿里云)

欢迎来到重庆SEO俱乐部:搜索引擎优化学习交流QQ群224306761. 承接:seo优化.网站建设.论坛搭建.博客制作.全网营销 博主可接:百度百家.今日头条.一点资讯等软文发布,有需要请联系PE! 点击与站长互动 301跳转:IIS服务器网站整站301永久重定向设置方法(阿里云) 首页 > 主机 > 正文 Panoeade / 2016-04-24 / 1975 views / 0 Replies / 悦读模式 / 百度已收录 欢迎投稿SEO/SEM及互联网相关文章:百度百家.今日头条.一

为什么不写中文软件?

朋友都去了西班牙,或者德国,进了国外软件外包企业,最后又独立开发开发软件,写的都是共享软件,界面是英文的,或者多语言,德语,西班牙语,就是没有中文的.一般发布在国外下载站,download.com.cnet.等下载站.他们常用的聊天软件icq,googl+,aim.他们很少写中文软件,认为写中文软件没有前途,生意不好做.他们与外商打交道多,他们不用支付宝,而是用paypal,vascard银行卡.支付宝很少用.其网站界面内容是西班牙文字,后台界面是英文.令你想不到,这是中国人设计开发的.

脚本实现一键部署Nginx软件(Web服务器):

案例1:编写一键部署软件脚本 案例2:启动脚本 案例3:编写监控脚本 案例4:编写安全检测脚本 案例5:编写进度显示脚本 1 案例1:编写一键部署软件脚本1.1 问题 本案例要求编写脚本实现一键部署Nginx软件(Web服务器): 一键源码安装Nginx软件 脚本自动安装相关软件的依赖包 脚本自动判断yum是否可用 1.2 步骤 实现此案例需要按照如下步骤进行. 步骤一:准备工作 1)判断yum源是否可用 通过yum repolist查看软件包数量是否大于0: [[email protected

刚写的 软件 求大家评论一下 看看 效果 后期抽空写个软件的教程

白板相机,白板一生的伴侣.会议记录最佳工具,高效办公利器,特别适合创业公司和中小团队. 让白板在会议中凸显其重要地位,会议事项,讨论过程,会议决议全部利用白板相机进行记录,有序保存.发送会议的第一手资料,并为下次会议讨论起到追溯跟踪的作用. 常用功能: 1. 快速保存会议决议:拍照记录会议中通过白板讨论事项:  2. 便捷建立会议档案:每次会议照片单独存储,便于检索和追溯,照片版的印象笔记! 3. 投影:无线投影会议记录照片到投影仪电脑(WiFi): 4. 分享:直接分享到微信.QQ或保存到印象

千呼万唤岂出来,写款软件不容易——Visual Entity 2.0 发布

在各位用户不继的催更中,终于完成了这次更新.Visual Entity这个软件发布于 2011年,这个软件完成后,便上班去了,也没有做什么推广工作.所以知道的用户并不多,尽管它是个非常好用.并且免费的软件.它是一个支持 NHibernate 和 Linq to SQL 的实体设计器,关于它的介绍,大家可以看:http://www.cnblogs.com/ansiboy/archive/2011/03/14/1983754.html . 随着 Visual Studio 的不断升级,但是旧版的 V

linux - 【通过终端软件secureCRT连接服务器】和【光驱挂载】7

[通过终端软件secureCRT连接服务器] 连接服务:ssh  (secure shell)安全内核 连接服务协议,走22号端口 设置secureCRT: [光驱挂载] 在windows里边,给光驱放入光盘,系统G盘符 会“自动”与光盘进行连接. 在linux系统里边,给光驱放入光盘,系统并不会让我们使用这个光盘,因为它还没有“挂载”的过程. linux系统的光盘在/dev/cdrom,但是cdrom是硬件设备,我们不能直接读取,因此需要把这个硬件设备与我们硬盘里边具体的一个目录(window

软件部通用技术类网站名录

关键词: 软件部通用技术类网站名录 解决方案: 序号 网站 网站简介 网址 数码资讯 1 中文业界资讯站 cnBeta.COM是互联网IT新闻业界的后起之秀,是国内领先的即时科技资讯站点和网友交流平台.消息速度快,报导立场公正中立,网友讨论气氛浓厚,在IT业界拥有独特的影响力. http://www.cnbeta.com/ 2 钛媒体 钛媒体,是国内首家TMT公司人社群媒体,最有钛度的一人一媒体平台. 钛媒体亦是TMT(Tech\Media\Telecom)的谐音,起源于TMT行业,如今已快速成