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

在\LogFiles\HTTPERR的日志中发现了大量Timer_MinBytesPerSecond,Timer_ConnectionIdle错误,
根据网上的介绍,做了如下更改:

1) 从 IIS 管理器右键单击 本地计算机 选择 属性。勾选允许直接编辑配置数据库。
2) 在记事本中打开 C:\Windows\system32\inetsrv\MetaBase.xml 文件,
搜索MinFileBytesPerSec,将 MinFileBytesPerSec 设置从 240 更改为 0。
搜索ConnectionTimeout,将 ConnectionTimeout 设置从 120 更改为 600。
MinFileBytesPerSec如果不在C:\Windows\system32\inetsrv\MetaBase.xml 文件 就是在C:\Windows\system32\inetsrv\MBSchema.xml 文件
3)重新启动 IIS 。

在修改MBSchema尤其注意,停止IIS进程,第一步修改
MetaBase
•在“IIsComputer”节点中,将 EnableEditWhileRunning 的值从 0 (FALSE) 更改为 1 (TRUE)。所做更改应如下所示:

<IIsComputer Location ="/LM"

EnableEditWhileRunning="1"

EnableHistory="1"

MaxBandwidth="4294967295"

MaxHistoryFiles="10">

•将所做更改保存到 MetaBase.xml 文件中。
然后才能修改MBSchema文件。。。

-------------------------------另一种见解

前些天发现自己的网站无法访问,询问机房这边,说是机器最近常死机,我就把网站迁移到一个朋友的主机上, 结果没过几天机器又挂了,问朋友的机房那边说是硬件防火墙被攻击了而死掉了,详细情况不知。看来不是硬件问题,多半是被SYN FLOOD或者CC攻击了。恰好原来的机房说最近购买了新的防火墙,我又放了回去。

既然不是硬件问题而可能是攻击,我就开始检查IIS log了,发现 IIS 里面很多Timer_ConnectionIdle和Timer_MinBytesPerSecond的错误,到网络上google了一下,常见说法是说错误是因为IIS的设置不当引起的,是因为连接超时时间设置太小,解决方法是设置连接超时为600秒,把MinFileBytesPerSec的设置从240修改到0(相当于关掉该设置)。觉得这些解决方法都有问题,假如车辆防盗警报经常响,正确的解决方法是看看有谁常来打你车子的主意,或者把车子放在更安全的地方,而绝对不是关掉警报。

因为HTTP服务需要占用TCP连接,而TCP连接时是需要占用系统资源的,而且IIS为每个连接也需要分配相应的资源。目前的主机能够处理上万的连接就可以说是软硬件设计都很不错了(可以参见C10K )。假如恶意人员通过一台或者多台机器发起大量的连接,而不请求内容(这样不需要消耗多少攻击机器的带宽),就可以大量消耗服务器资源而达到拒绝服务的目的。

所以 IIS 需要关闭长时间非活动的连接,这个就是Timer_ConnectionIdle 的错误由来。

既然盾牌改进了,当然矛也要发展一下,攻击者可以给服务器故意缓慢的发送和接收内容而消耗服务器的资源,这样可以避免服务器对于Timer_ConnectionIdle 的保护,相应的IIS的防范就是 MinFileBytesPerSec 设置,MinFileBytesPerSec 属性通过以最小的数据量保持连接,来禁止恶意的或软件工作不正常的客户端消耗资源。如果吞吐量低于 MinFileBytesPerSec 设置的值,则终止连接。LOG里面就会显示Timer_MinBytesPerSecond错误(一些Timer_MinBytesPerSecond错误是因为 windows 2003 的http.sys错误引起的,解决方式是打上最新 ServicePack : http://support.microsoft.com/kb/919797 http://support.microsoft.com/kb/919797/en-us )

所以说这些设置都是用来保护IIS服务器的,可以一定程度上抵御一些恶意的行为消耗服务器的资源,所以我反而将IIS连接超时从原来的600秒改到了30秒

不过经过我们解决问题发现时因为网站所在的应用程序池中请求队列限制,限制在1000,根据自己的网站流量,果断设置为 5000-10000就解决了,默认的1000确实有点少了

(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并未停止运行,各服务也正常处理,但就是无法访问站点上的页面(包括静态页面).这种问题其实以前也经常发生,基本上处理方法

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

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

  • nginx服务器access日志中大量400 bad request错误的解决方法

    在access.log中有大量400错误,并以每天几百M的速度增加,占用大量空间. 复制代码 代码如下: tail -f /opt/nginx/logs/access.log 116.236.228.180 - - [15/Dec/2010:11:00:15 +0800] "-" 400 0 "-" "-"     116.236.228.180 - - [15/Dec/2010:11:00:15 +0800] "-" 400

  • Python统计日志中每个IP出现次数的方法

    本文实例讲述了Python统计日志中每个IP出现次数的方法.分享给大家供大家参考.具体如下: 这脚本可用于多种日志类型,本人测试MDaemon的all日志文件大小1.23G左右,分析用时2~3分钟 代码很简单,很适合运维人员,有不足的地方请大家指出哦 #-*- coding:utf-8 -*- import re,time def mail_log(file_path): global count log=open(file_path,'r') C=r'\.'.join([r'\d{1,3}']

  • 使用Python编写提取日志中的中文的脚本的方法

    由于工作需要在一大堆日志里面提取相应的一些固定字符,如果单纯靠手工取提取,数据量大,劳心劳力,于是自然而然想到了用Python做一个对应的提取工具,代替手工提取的繁杂,涉及中文字符,正则表达式不好匹配,但不是不可以实现,这个以后优化时再说. 需求描述: 一个父目录中存在多个子文件夹,子文件夹下有多个txt形式化的Log日志,要求从所有地方Log日志中找出CardType=9, CardNo=0时的CardID的值,并将其统计存储到一个文本文件中,要求CardID不能够重复. 需求解析: 首先获取

  • 用vi命令删除日志中的所有内容并对日志进行实时监控

    很多时候我们对应用程序的排错需要查看日志文件,然而日志中通常有许多我们以前的应用程序产生的日志,其他的日志过多的时候,有时候看起当前应用程序产生的日志的时候有点费力,这时候我们可能想通过清除先前的日志,使得当前产生的日志看起来清晰: vi test.log :0,$d :wq 注释: :0,$d是删除第0行到最后一行的意思::wq是保存并退出的意思. 然后输入如下命令,就可以实时监控test.log里面的内容了: tail -f test.log 注释:tail命令是查看test.log文件的后

  • 日志中的秘密 Windows登录类型知多少?

    不错,Windows为了让你从日志中获得更多有价值的信息,它细分了很多种登录类型,以便让你区分登录者到底是从本地登录,还是从网络登录,以及其它更多的登录方式.因为了解了这些登录方式,将有助于你从事件日志中发现可疑的黑客行为,并能够判断其攻击方式.下面我们就来详细地看看Windows的登录类型. 登录类型2:交互式登录(Interactive) 这应该是你最先想到的登录方式吧,所谓交互式登录就是指用户在计算机的控制台上进行的登录,也就是在本地键盘上进行的登录,但不要忘记通过KVM登录仍然属于交互式

  • c#.NET中日志信息写入Windows日志中解决方案

    1. 目的   应用系统的开发和维护离不开日志系统,选择一个功能强大的日志系统解决方案是应用系统开发过程中很重要的一部分.在.net环境下的日志系统解决方案有许多种,log4net是其中的佼佼者.  在Windows2000及以上操作系统中,有一个Windows日志系统,它包括应用程序(Application)事件日志.系统(System)日志和安全(Security)日志,事件日志也可以是自定义日志.在.net Framework中也提供了相应的类和接口来使用应用程序事件日志或者自定义事件日志

  • Python实现从log日志中提取ip的方法【正则提取】

    本文实例讲述了Python实现从log日志中提取ip的方法.分享给大家供大家参考,具体如下: log日志内容如下(myjob.log): 124.90.53.68 - - [05/Feb/2018 11:37:07] "GET /favicon.ico HTTP/1.1" 404 - 61.148.245.145 - - [05/Feb/2018 12:37:44] "GET / HTTP/1.1" 200 - 61.148.245.145 - - [05/Feb/

  • nginx日志中添加请求的response日志(推荐)

    由于此功能在nginx内置的功能中没有,需要安装第三方模块ngx_lua,由于此模块需要Lua语言,所以需要安装相应的Lua语言包 1. 下载安装LuaJIT # cd /usr/local/src # wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz # tar -xzvf LuaJIT-2.0.2.tar.gz # cd LuaJIT-2.0.2 # make 出现如下内容表示编译成功 OK Successfully built LuaJ

  • Linux日志中查找关键字及其前后的信息实例方法

    在日常工作中,我们经常需要查看日志,比如可以通过 tail 命令实时查看日志,也可以通过 cat 等命令查看日志信息. 但现在我们要讨论的是,如何从日志中通过关键字过滤出我们想要的内容,方法有多种,今天我们主要以 cat 命令来进行学习. 假设存在日志文件 hrun.log,查询的关键字为"新增用户": 根据关键字查看日志 cat hrun.log | grep "新增用户" 根据关键字查看后10行日志 cat hrun.log | grep "新增用户&

随机推荐