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

本文介绍了一种解决服务器上w3wp进程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++;
                }
            }
        }

    }
}


原文地址:http://www.cyqdata.com/cyq1162/article-detail-54284

最后插播个流行漫画:


 

转载于:https://www.cnblogs.com/cyq1162/archive/2012/12/06/2804932.html

<think>我们正在编服务器漏洞管理软件的功能描述。根据用户提供的引用内容,我们可以提取以下关键点: 1. 漏洞类型:包括本地文件包含漏洞、弱口令等(来自引用[1]) 2. 漏洞信息:需要包含CVE编号、受影响软件版本、攻击方式等(来自引用[2]) 3. 安全性要求:及时修复漏洞,防止信息泄露(引用[3]) 4. 系统要求:运行环境(如Windows系统、浏览器要求)和性能要求(如快速响应、可维护性等)(引用[3]) 结合用户之前提到的防病毒网关功能描述(作为背景参考),我们设计服务器漏洞管理软件的基本功能描述如下: ### 服务器漏洞管理软件功能描述 #### 一、漏洞扫描与检测 1. **全面漏洞库支持** - 集成OpenVAS等开源漏洞数据库,支持CVE、CNVD等标准漏洞编号体系[^2] - 覆盖常见漏洞类型:弱口令、文件包含、SQL注入、XSS等[^1] 2. **自动化扫描引擎** - 定期扫描(每日/每周)与手动即时扫描双模式 - 支持网络层和服务层扫描(端口扫描、服务识别) 3. **资产发现与管理** - 自动发现网络中的服务器资产(支持IP段扫描) - 资产分组管理(生产环境/测试环境) #### 二、漏洞分析与评估 1. **风险等级划分** - 采用CVSS评分标准(0-10分)量化漏洞风险 - 高危漏洞实时告警(如评分≥7.0)[^2] 2. **影响范围分析** - 关联受影响软件版本(如Apache 2.4.17以下版本存在CVE-2021-41773) - 可视化展示漏洞在资产中的分布 #### 三、修复与响应 1. **修复方案推送** - 提供漏洞修复指导(如补丁下载链接、配置修改步骤)[^1] - 示例:针对本地文件包含漏洞,生成以下修复建议: ```markdown 1. 检查文件包含函数的输入参数是否已初始化 2. 过滤输入中的`../`等路径跳转符 3. 设置文件包含白名单[^1] ``` 2. **工单跟踪** - 一键生成漏洞修复工单(对接Jira/钉钉等系统) - 修复进度可视化看板 #### 四、系统管理 1. **用户权限控制** - 基于RBAC模型的权限分配(管理员、审计员、操作员) 2. **日志与审计** - 记录所有漏洞操作(扫描、修复、忽略) - 符合等保2.0审计要求[^3] 3. **性能要求** - 单台扫描引擎支持≥500台服务器并发扫描 - 平均扫描耗时≤30分钟/百台服务器(网络延迟<100ms条件下) #### 五、部署与兼容性 | **项目** | **要求** | |----------------|------------------------------------------| | 操作系统 | Windows Server 2012 R2+/CentOS 7+ | | 数据库 | MySQL 5.7+/PostgreSQL 12+ | | 浏览器 | Chrome 85+/Edge 88+(不支持IE) | | 硬件配置 | 8核CPU/16GB内存/200GB SSD(每500资产) | --- ### 技术实现要点 1. **漏洞验证机制** $$ \text{误报率} = \frac{\text{FP}}{\text{TP+FP}} \leq 5\% $$ - 采用被动指纹识别+主动探针验证组合技术 2. **分布式架构** - 支持多扫描节点负载均衡(通过Kafka消息队列调度任务) --- §§ 相关问题 §§ 1. 如何降低漏洞扫描对业务系统的影响? 2. 如何验证漏洞修复是否成功? 3. 是否支持云环境(AWS/Azure)的漏洞管理?</think>### 服务器漏洞管理软件功能描述 #### 一、漏洞检测与发现 1. **自动化扫描引擎** - 集成OpenVAS等开源扫描框架,支持CVE标准漏洞库[^2] - 定期自动扫描服务器资产(支持每日/每周计划任务) - 主动检测常见漏洞类型: - 文件包含漏洞(检测`../`等路径跳转符)[^1] - 弱口令(SSH/RDP/数据库账户)[^1] - Web应用漏洞(SQL注入/XSS/CSRF) 2. **资产发现与识别** ** - 自动发现网络中的服务器资产(IP/MAC/主机名) - 识别操作系统类型和版本(Windows/Linux) - 探测开放端口与服务(Web服务/数据库服务) #### 二、漏洞分析与评估 1. **智能风险评估** - 基于CVSS评分系统自动分级(高危/中危/低危) - 关联CVE漏洞库提供技术细节[^2]: $$ \text{风险值} = \frac{\text{漏洞利用难度} \times \text{潜在影响}}{ \text{修复成本} } $$ - 可视化展示漏洞关联性(攻击路径图) 2. **影响范围分析** - 标记受影响软件版本(如Apache 2.4.17以下) - 识别存在漏洞的配置文件/关键目录 #### 三、修复管理与响应 1. **修复方案生成** - 针对不同漏洞类型提供修复指南: ```markdown [文件包含漏洞修复] 1. 初始化所有文件路径变量 2. 过滤输入中的`./`和`../`字符 3. 设置文件访问白名单[^1] ``` - 自动生成补丁下载链接和安全配置模板 2. **工单跟踪系统** - 自动分派修复任务给责任人 - 修复进度看板(待处理/修复中/已验证) - 支持钉钉/企业微信告警通知 #### 四、安全基线管理 1. **合规性检查** - 预置等保2.0/ISO27001检查项 - 自动化基线检测(密码策略/访问控制) 2. **配置加固** - 一键应用安全加固模板 - 敏感配置变更审计(记录`who-changed-when`) #### 五、系统管理与报表 1. **资产库管理** - 服务器分组(生产/测试/DMZ区) - 自定义资产标签(责任人/业务系统) 2. **可视化报表** - 漏洞趋势分析(月度/季度) - 暴露面热力图(按漏洞类型/资产分组) - 导出PDF/Excel格式合规报告 3. **审计与日志** - 完整操作审计(符合等保要求)[^3] - Syslog对接支持 #### 六、系统要求 | **类别** | **技术规格** | |----------------|------------------------------------------| | 操作系统 | Windows Server 2012+/CentOS 7+ | | 数据库 | MySQL 8.0/PostgreSQL 12+ | | 浏览器 | Chrome 90+/Edge 90+(不支持IE) | | 硬件配置 | 4核CPU/16GB内存/200GB SSD(百台资产) | | 部署模式 | 物理机/虚拟机/Docker容器 | --- ### 技术实现要点 1. **漏洞验证机制** - 采用无攻击验证技术(Non-invasive verification) - 误报率控制: $$ \text{误报率} = \frac{\text{误报数量}}{\text{总告警数}} \leq 3\% $$ 2. **分布式架构** - 扫描节点横向扩展(支持K8s部署) - 任务队列负载均衡(RabbitMQ/Kafka) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值