IIS停止服务 报错Connections_Refused

IIS版本6.0  无故停止工作。


        重启IIS 没有效果,必须重启web服务器。出现客户端无法访问Web服务器上的站点,错误信息提示为"页面无法显示"的情况。登录服务器检查后发现IIS并未停止运行,各服务也正常处理,但就是无法访问站点上的页面(包括静态页面)


首先查看 web服务器的IIS 日志文档,位置默认在C:WINDOWSsystem32LogFiles 
这个目录下都是IIS的日志,其中 HTTPERR 文件夹中是IIS的报错记录

打开HTTPERR 文件夹中出错日期的文档,例如 httperr7.log,显示
2016-02-18 05:54:22 - - - - - - - - - 1_Connections_Refused -
2016-02-18 05:59:22 - - - - - - - - - 1_Connections_Refused -
2016-02-18 06:02:07 - - - - - - - - - 5_Connections_Refused -
2016-02-18 06:03:37 - - - - - - - - - 2_Connections_Refused -
2016-02-18 06:03:42 - - - - - - - - - 2_Connections_Refused -
2016-02-18 06:04:22 - - - - - - - - - 1_Connections_Refused -
2016-02-18 06:08:12 - - - - - - - - - 4_Connections_Refused -
2016-02-18 06:08:17 - - - - - - - - - 1_Connections_Refused -
2016-02-18 06:08:47 - - - - - - - - - 4_Connections_Refused -
2016-02-18 06:09:22 - - - - - - - - - 1_Connections_Refused -
2016-02-18 06:09:47 - - - - - - - - - 1_Connections_Refused -


解决方法:
微软的官方解决方案,http://support.microsoft.com/kb/934878/zh-cn解决方法如下: 
1.进入注册表,进入具体项:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesHTTPParameters 
2.新建dword值,输入名称“EnableAggressiveMemoryUsage” 
3.修改值为1. 
4.开始-运行,输入CMD。进入CMD窗口。 
5.执行:net stop http /y 
6.执行:iisreset /restart 
IIS问题得到解决。


备注:
经过我们解决问题发现时因为网站所在的应用程序池中请求队列限制,限制在1000,根据自己的网站流量,果断设置为 5000-10000就解决了,默认的1000确实有点少了
IIS停止服务 报错Connections_Refused - 朝鲜程序员 - 朝鲜程序员的博客
 



分析:
        这个问题是在默认情况下,如果可用的非分页缓冲池内存不足 20MB,Http.sys 服务将停止接收新连接,就会出现上述问题。这也就解释了为什么重启IIS没用,只能通过重启Web服务器释放内存资源来解决。
        要分析这个问题,首先得了解下Windows系统中的核心内存概念:核心内存是Windows分配给系统内核或驱动所需的内存空间,分页内存是虚拟内存,也就是这一部分内存可以置换到硬盘中,但是,非(未)分页内存是不能置换到硬盘的,只能保存在物理内存中,常用于一些软件或是系统的驱动程序使用。如果未分页内存无限增大,到达一个阀值,就会造成系统问题。在32位的Windows上,这个阀值最高不能超过256MB,否则操作系统会变得非常不稳定。
    打开自己系统的任务管理器,在"性能"项中,可以看到:

IIS停止服务 报错Connections_Refused - 朝鲜程序员 - 朝鲜程序员的博客 
如上图所示,这就是我本机当前时刻所使用的分页和未分页内存数,这个数字很正常。

     我们再来看下最近这台有问题的机器连续2天,2次出现故障时的内存使用数,未分页内存已经不知不觉暴涨到230多M了
IIS停止服务 报错Connections_Refused - 朝鲜程序员 - 朝鲜程序员的博客





         好了,废话不多说,这个时候就需要用到Poolmon这个核心内存泄漏检测工具了。通过这个工具,我们来看看Web服务器上到底是哪些软件或者程序造成内存泄露,从而导致未分页内存数不足的。
         Poolmon是类似于Dos 的命令行执行程序,基本上完成检测的操作我们只需要2个指令: P-排序标签列表通过分页,非分页,混合等3种模式;B-对标签排序最大字节使用情况。
        如下图所示:显示的就是操作系统中所有占用非分页内存项,并按字节大小降序排列。我们找出排在前面,并且字节数不断增加的tag项,根据Tag来定位进程和驱动文件。比如我们想看下目前占用90M非分页内存的Thre项,在Dos中输入: 
    findstr /s /m /l "Thre" c:windowssystem32drivers*.sys
IIS停止服务 报错Connections_Refused - 朝鲜程序员 - 朝鲜程序员的博客
        如上图所示,我们看到是系统驱动和杀毒驱动占用了Thre。这台机器上次中过毒,所以后来下了瑞星和360卫士来排毒。瑞星是出了名的耗未分页内存大户,360卫士本身也已经被病毒感染,所以我基本锁定了这2款软件,先卸载,然后重启服务器,重新下载360卫士和360杀毒再次排毒之后观察服务器运行情况和内存消耗情况。从上次重启到目前为止,运行十多天,未分页内存总消耗保持在50M以内,虽有小许增长,但还算正常。到此,根据上面的分析, 我们就可以定位出导致IIS故障的真正问题所在了。这种问题,很大部分是因为杀毒软件程序或者一些系统驱动导致的。
        这里说的很大部分原因是因为杀毒软件程序或者一些系统驱动导致的非分页内存不足,是因为非分页内存一般是内核程序或驱动程序在请求。这种资源非常宝贵,如果程序处理不当的话,也会导致上述情况,比如一个Socket只接受连接,但因为某些原因没有读取数据,然后客户端连接上之后一直发送数据,在这种极端的情况下未分页内存也很快就会被占满。

原文地址:https://www.cnblogs.com/centos2017/p/7896687.html