这篇文章其实已经写好很久,只是后来一直没有重现当时的问题,或者因为业务的重要性、投诉的压力也就临时处理了。这几天某地市Web服务器连续多次出现这个问题,正好借这个案例来做个收尾。

前几个月有台重要的Web服务器(Windows Server2003 + IIS6.0)出现客户端无法访问Web服务器上的站点,错误信息提示为"页面无法显示"的情况。登录服务器检查后发现IIS并未停止运行,各服务也正常处理,但就是无法访问站点上的页面(包括静态页面)。这种问题其实以前也经常发生,基本上处理方法都是通过重启Web服务器来解决,至于为什么要这样处理,并没有具体的论断和依据,多半是凭借个人的经验所致,所以这种解决方法只能缓解下投诉压力,没有从根本上解决问题。

那么,我们现在就来针对这个问题深入探讨下,找出问题的根本,争取做到治标治本。

首先,肯定是分析问题服务器上的IIS日志,我发现在站点无法访问的那段时间, httperr日志中记录了大量的"Connections_Refused"错误

这个问题是在默认情况下,如果可用的非分页缓冲池内存不足 20MB,Http.sys 服务将停止接收新连接,就会出现上述问题。这也就解释了为什么重启IIS没用,只能通过重启Web服务器释放内存资源来解决。
     网上也有微软官方的解决方案: 
  1. 进入注册表,找到如下项:
     HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters ;  
  2. 新建Dword值,输入名称 "EnableAggressiveMemoryUsage";
  3. 修改值为1;
  4. 重启 HTTP 服务:
     在DOS下分别执行    
        net stop http /y
        iisreset /restart

我按照上述说明进行了配置,但有没有效果无法考证,只能先观察这台服务器后续的运行情况。这种处理方法比之前重启Web服务器更进了一步,至少比之前盲目的重启重启重启,更明确的知道了引起问题的原因,离真相更近了一步。那么问题发生的真正原因呢?究竟是什么导致的非分页缓冲池内存会持续增大到少于20M的呢?
    要分析这个问题,首先得了解下Windows系统中的核心内存概念:核心内存是Windows分配给系统内核或驱动所需的内存空间,分页内存是虚拟内存,也就是这一部分内存可以置换到硬盘中,但是,非分页内存是不能置换到硬盘的,只能保存在物理内存中,常用于一些软件或是系统的驱动程序使用。如果未分页内存无限增大,到达一个阀值,就会造成系统问题。在32位的Windows上,这个阀值最高不能超过256MB,否则操作系统会变得非常不稳定。
    打开自己系统的任务管理器,在"性能"项中,可以看到:


     如上图所示,这就是我本机当前时刻所使用的分页和未分页内存数,这个数字很正常。
     我们再来看下最近这台有问题的机器连续2天,2次出现故障时的内存使用数,未分页内存已经不知不觉暴涨到230多M了

好了,废话不多说,这个时候就需要用到Poolmon这个核心内存泄漏检测工具了。通过这个工具,我们来看看Web服务器上到底是哪些软件或者程序造成内存泄露,从而导致未分页内存数不足的。Poolmon是类似于Dos 的命令行执行程序,基本上完成检测的操作我们只需要2个指令: P-排序标签列表通过分页,非分页,混合等3种模式;B-对标签排序最大字节使用情况。如下图所示:显示的就是操作系统中所有占用非分页内存项,并按字节大小降序排列。我们找出排在前面,并且字节数不断增加的tag项,根据Tag来定位进程和驱动文件。比如我们想看下目前占用90M非分页内存的Thre项,在Dos中输入: 
    findstr /s /m /l "Thre" c:\windows\system32\drivers\*.sys

如上图所示,我们看到是系统驱动和杀毒驱动占用了Thre。这台机器上次中过毒,所以后来下了瑞星和360卫士来排毒。瑞星是出了名的耗未分页内存大户,360卫士本身也已经被病毒感染,所以我基本锁定了这2款软件,先卸载,然后重启服务器,重新下载360卫士和360杀毒再次排毒之后观察服务器运行情况和内存消耗情况。从上次重启到目前为止,运行十多天,未分页内存总消耗保持在50M以内,虽有小许增长,但还算正常。到此,根据上面的分析, 我们就可以定位出导致IIS故障的真正问题所在了。这种问题,很大部分是因为杀毒软件程序或者一些系统驱动导致的。
    这里说的很大部分原因是因为杀毒软件程序或者一些系统驱动导致的非分页内存不足,是因为非分页内存一般是内核程序或驱动程序在请求。这种资源非常宝贵,如果程序处理不当的话,也会导致上述情况,比如一个Socket只接受连接,但因为某些原因没有读取数据,然后客户端连接上之后一直发送数据,在这种极端的情况下未分页内存也很快就会被占满。

作者:牦牛
出处:http://maoniu602.cnblogs.com/
关于:我等因无形而恐惧,于是挥下刀刃,以假面之名...... 
说明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

IIS故障问题(Connections_Refused)分析及处理【转】相关推荐

  1. 计算机故障的现象有哪些,八种常见CPU故障现象的分析与处理_计算机硬件与网络_IT /计算机_信息...

    八种常见CPU故障现象的分析和处理214 Mini Games http: 1.机箱噪声: 故障现象: 在使用CPU升级计算机之后,每次打开计算机时,噪声都会很大. 但是使用一段时间后,声音恢复正常. ...

  2. IIS日志作用与分析

    相信很多站长都知道IIS日志的存在,可是并不重视,因为一些基本数据我在站长工具就可以查询到,何必去看IIS日志呢?你这样想,就错了.想要了解真正的去了解蜘蛛,了解网站概况,观察IIS日志是必须的! 那 ...

  3. c++ 0x8000ffff灾难性故障_《可靠性设计》——故障模式影响分析

    基本概念 故障模式影响分析FMEA(Failure Mode Effect Analysis) :是指在产品设计过程中,通过对各组成单元潜在的各种故障模式及其对产品功能的影响进行分析,并把每一种潜在故 ...

  4. 连接MySQL数据库时常见故障问题的分析与解决

    连接MySQL数据库时常见故障问题的分析与解决 初学的mysql网友好象经常会碰到mysql无法连接的错误.特开贴收集这样问题的现象和原因. 先自己扔块砖头出来. 归纳如下: 故障现象 : 无法连接 ...

  5. 数仓集群管理:单节点故障RTO机制分析

    摘要:大规模分布式系统中的故障无法避免.发生单点故障时,集群状态和业务是如何恢复的? 本文分享自华为云社区<GaussDB (DWS) 集群管理系列:单节点故障RTO机制分析(集群状态恢复篇)& ...

  6. 交换机网络故障及原因分析集锦

    在生活和工作中,我们难免会遇到网络故障,尤其是在交换机组网时会遇到更多的问题,为了方便大家的工作,今天小编就给大家介绍一些经典的案例故障和解决方案. 1.交换机刚加电时网络无法通信 故障现象:交换机刚 ...

  7. 金武士ups电源故障情况类型分析及维修

    金武士ups电源故障情况类型分析及维修 一.金武士UPS电源无法启动 因为金勇士ups的电源是DC启动的,所以在电池没有连接.电池电量低或者电池有问题的情况下,UPS是无法启动的.下面有几种类似的情况 ...

  8. 五 常见的计算机故障有哪些,笔记本电脑常见故障有哪些 笔记本电脑常见故障问题大全分析...

    笔记本电脑常见故障问题大全分析: 一.笔记本不加电 (电源指示灯不亮) 1. 检查外接适配器是否与笔记本正确连接,外接适配器是否正常工作. 2. 如果只用电池为电源,检查电池型号是否为原配电池;电池是 ...

  9. 计算机不间断电源维修,ups电源工作原理和维修技巧,具体故障现象的分析处理!...

    ups电源工作原理对于我们在维修上是起到非常重要的作用,一旦遇到应急电源故障问题科技结合以往使用经验和维修技巧进行解决.就像不同类型的ups电源就有不同的状况和维修技巧,具体故障现象分析状况请和我一起 ...

最新文章

  1. 这个寒冬,如何让我们的身价翻倍?
  2. 「模型解读」从2D卷积到3D卷积,都有什么不一样
  3. 解决通过QQ客户端的空间邮箱等打开空间邮箱
  4. 枚举当前环境中打开的所有IE
  5. 日本京都大学再次斩获诺贝尔奖,对比清华大学,究竟哪里有差距?
  6. 创建主机地址 (A) DNS 记录
  7. 关于std::set的一些补充
  8. 微信已经老了,头条永远年轻
  9. ssm整合(crm案例)
  10. 项目启动会发言稿(范文二)
  11. idea上传新项目至svn仓库
  12. 谷歌传奇Jeff Dean获2021年IEEE冯诺依曼奖,8页本科论文被大学图书馆保存至今
  13. CentOS6与CentOS7的区别
  14. AndroidStudio 之Safe Delete 安全删除
  15. yapi在centos下的部署安装 后台启动(亲自动手实践)
  16. Direct I/O in DOSBOX for COMM serial communications with QBasic, TBasic or Pbasic
  17. 软件测试工程师笔试题带答案(二)
  18. MacOs 12 微信闪退
  19. dell g3 3590 黑苹果折腾日记(0)
  20. 主板上的PCI和PCI-E的区别

热门文章

  1. 拍照手抖有救了!DeblurGAN消除运动模糊效果惊人 | 附论文+代码
  2. 60名英语专八的半年苦战:机器智能背后有一群“数字工人”
  3. 201771010101 白玛次仁《面向对象程序设计(Java)》第十一周学习总结
  4. [COGS2639]偏序++
  5. thinkphp实现动态下拉菜单(补充 设置默认值)
  6. javascript 商务通
  7. SQL Server 2012入门T-SQL基础篇:(10)UPDATE语句
  8. 三层交换和二层交换之间的端口聚合
  9. MySQL数据库、数据表和字段字符集查询、修改和配置
  10. Java程序员是如何面试上阿里巴巴,如何拿到年薪50W