IIS故障(Connections_Refused)问题分析及处理

这篇文章其实已经写好很久,只是后来一直没有重现当时的问题,或者因为业务的重要性、投诉的压力也就临时处理了。这几天某地市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只接受连接,但因为某些原因没有读取数据,然后客户端连接上之后一直发送数据,在这种极端的情况下未分页内存也很快就会被占满。

(0)

相关推荐

  • HTTPERR的日志中出现大量Timer_MinBytesPerSecond,Timer_ConnectionIdle错误

    在\LogFiles\HTTPERR的日志中发现了大量Timer_MinBytesPerSecond,Timer_ConnectionIdle错误, 根据网上的介绍,做了如下更改: 1) 从 IIS 管理器右键单击 本地计算机 选择 属性.勾选允许直接编辑配置数据库. 2) 在记事本中打开 C:\Windows\system32\inetsrv\MetaBase.xml 文件, 搜索MinFileBytesPerSec,将 MinFileBytesPerSec 设置从 240 更改为 0. 搜索

  • win2003 iis6.0站点打不开,找不到服务器或 DNS 错误(Connections_Refused)

    无法显示页. 要查找的页面是当前不可用的. 该 Web 站点可能会出现技术的了问题,或者您可能需要调整浏览器设置. 找不到服务器或 DNS 错误. ping能ping通,telnet 80端口也没有问题.查看LOGFILES下的HTTPERROR,发现很多"36_Connections_Refused"这样的错误信息. 百度搜索了下"_Connections_Refused",找到微软的官方解决方案,http://support.microsoft.com/kb/9

  • IIS 无法找到服务器,静态页面也无法访问 大量出现Connections_Refused的错误提示

    Windows 2003 IIS 服务器 访问出现网页无法显示,网页标题栏提示找不到服务器.查看IIS服务器运行正常,IIS服务运行正常,重启IIS仍然出现该问题.内网127.0.0.1访问还是无法显示网页,动态页面访问不了,就连html静态页面也访问不了.初步估计是遭受了拒绝服务攻击,导致服务器拒绝任何连接. 网上询问,说查看http错误日志(C:\WINDOWS\system32\LogFiles\HTTPERR). 果然,http错误日志中发现很多Number_Connections_re

  • IIS故障(Connections_Refused)问题分析及处理

    这篇文章其实已经写好很久,只是后来一直没有重现当时的问题,或者因为业务的重要性.投诉的压力也就临时处理了.这几天某地市Web服务器连续多次出现这个问题,正好借这个案例来做个收尾. 前几个月有台重要的Web服务器(Windows Server2003 + IIS6.0)出现客户端无法访问Web服务器上的站点,错误信息提示为"页面无法显示"的情况.登录服务器检查后发现IIS并未停止运行,各服务也正常处理,但就是无法访问站点上的页面(包括静态页面).这种问题其实以前也经常发生,基本上处理方法

  • IIS&Apache 攻击记录分析篇

    在这里,我为大家介绍一下两种常见的网页服务器中最重要的记录文件,分析服务器遭到攻击后,黑客在记录文件中会留下什么记录.目前最常见的网页服务器有两种:Apache和微软的Internet Information Server(简称IIS),这两种服务器都有一般版本和SSL认证版本.本文将使用和现实黑客的攻击手段类似的攻击方法去测试服务器并分析相关文件,有条件的朋友可在自己的机器上测试. IIS的预设记录文件地址在C:\winnt\system32\logfiles\w3svc1目录下,文件名是当天

  • IIS的安全机制分析(修正版)

    以Windows NT内核的安全机制为基础 1.web文件目录应该ntsf分区模式 NTFS文件系统可以对文件和目录进行管理,FAT文件系统则只能提供共享级的安全,而Windows NT的安全机制是建立在NTFS文件系统之上的,所以在安装Windows NT时最好使用NTFS文件系统,否则将无法建立NT的安全机制. 2.修改共享权限 在系统默认情况下,每建立一个新的共享,Everyone用户就享有"完全控制"的共享权限,因此,在建立新的共享后应该立即修改Everyone的缺省权限,在安

  • mysql 无法联接常见故障及原因分析

    ===================================================================================================== 故障现象 : 无法连接 mysql 错误信息 :ERROR 2003 (HY000): Can't connect to MySQL server on 'hostxxxxx' (10061) 原因 : mysqld数据库服务没有启动. 检查 :在windows 的任务管理器,或者 unix/l

  • 一般故障排除步骤与方法

    一般故障排除 硬盘的分区损坏.当硬盘启动时,会出现"Invalid partition table",而且用系统软盘启动后,用"DIR C:"命令,如果出现"Invalid drive specification",说明硬盘的分区损坏.需要用"FDISK"和"FORMAT"命令重新分区格式化. 24.2.1 硬盘故障排除 l.系统引导文件被破坏的处理 启动计算机时,屏幕出现"Missing Ope

  • 交换机故障的一般分类和排障步骤

    交换机的优越性能和价格的大幅度下降,促使了交换机的迅速普及.网络管理员在工作中经常会遇到各种各样的交换机故障,如何迅速.准确地查出故障并排除故障呢?本文就常见的故障类型和排障步骤做一个简单的介绍.由于交换机在公司网络中应用范围非常广泛,从低端到中端,从中端到高端,几乎涉及每个级别的产品,所以交换机发生故障的机率比路由器,硬件防火墙等要高很多,这也是为什么我们首先讨论交换机故障的分类与排除故障步骤的原因. 一,交换机故障分类: 交换机故障一般可以分为硬件故障和软件故障两大类.硬件故障主要指交换机电

  • SQL语句执行超时引发网站首页访问故障问题

    非常抱歉,今天早上 6:37~8:15 期间,由于获取网站首页博文列表的 SQL 语句出现突发的查询超时问题,造成访问网站首页时出现 500 错误,由此给您带来麻烦,请您谅解. 故障的情况是这样的. 故障期间日志中记录了大量下面的错误. 2020-02-03 06:37:24.635 [Error] An unhandled exception has occurred while executing the request./Microsoft.AspNetCore.Diagnostics.E

  • WINDOWS2016故障转移群集(图文教程)

    WIN2016故障转移群集 准备工作: 主机名 IP 域名 WINA 192.168.0.24 WINA.NET WINB 192.168.0.25 WINB.NET WINC 192.168.0.26 WINC.NET 所有主机配置主机信息 修改好主机名IP  DNS为本机IP   (以单台主机A为例) 互相ping测试连通性 (以单台主机A为例) 所有主机安装角色功能 DNS和故障转移群集 (以单台主机A为例) 所有主机配置DNS解析记录 并测试解析 新建正向查找区域NET 新建反向查找区域

  • 推荐4款傻瓜型的ASP服务器软件(asp运行环境一键搭建工具)

    虽然现在各种语言大行其道,但是asp的成熟性以及易用性还是有很大的客户量存在,要运行ASP程序,必须安装调试ASP的环境,这里我们就需要安装Windows自带的IIS作为服务器.而IIS的安装对于非专业人士来说是件难以完成的任务,通常不知道如何着手,且安装过程繁琐,容易出错,还需要操作系统安装光盘.这里,我推荐几款傻瓜型的ASP服务器软件,比较适合初级站长. 1.IIS自动安装程序: 官方网站:http://landian.cc/ IIS的安装对于非专业人士来说是件难以完成的任务,通常不知道如何

  • Windows服务器安全配置

    服务器安全配置(只针对WIN系统) 一. 原则关掉所有不使用的服务,不安装所有与服务器无关的软件,打好所有补丁 修改3389 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\Wds\Repwd\Tds\Tcp, 看到那个PortNumber没有?0xd3d,这个是16进制,就是3389啦,我改XXXX这个值是RDP(远程桌面协议)的默认值,也就是说用来配置以后新建的RDP服务的,要改已经建立的RDP服务,我们

随机推荐