标题:windows2003 iis6 装了.net 后 第一次打开网站会卡住,
只看楼主
ysf0181
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:55
帖 子:914
专家分:2385
注 册:2006-10-4
结帖率:76.71%
已结贴  问题点数:20 回复次数:5 
windows2003 iis6 装了.net 后 第一次打开网站会卡住,
windows2003 iis6 装了.net 后 第一次打开网站会卡住,要等好久才能打开网站,就是不正常的的打开,慢,第一次打开会这样,第二次就不会了。没装 。net 前没这个问题。
搜索更多相关主题的帖子: 网站 
2012-08-10 09:54
ysf0181
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:55
帖 子:914
专家分:2385
注 册:2006-10-4
得分:0 
在\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. http://support.

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

难道是这个原因?

ASP讨论QQ群:251346273
2012-08-10 10:10
netlin
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:24
帖 子:544
专家分:4308
注 册:2012-4-9
得分:7 
学习了!
不过,缺省安装时好象没遇到这样的问题!

做自己喜欢的事!
2012-08-10 12:42
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:7 
第一次打开慢,是因为.net在编译网站程序,所以第二次之后就快了。如果你不修改程序,就不需要重新编译,以后一直都快的,它能判断改动的文件影响到哪些,有针对性地重新编译,假如变动不大(比如不变动app_code文件夹中的代码),反应还是很快的。这是.net可以动态更新网站的实现方式。网站实际运行的是编译好后的dll程序,另外有地方放,跟源代码是脱离的。

授人以渔,不授人以鱼。
2012-08-10 16:16
ysf0181
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:55
帖 子:914
专家分:2385
注 册:2006-10-4
得分:0 
以下是引用TonyDeng在2012-8-10 16:16:15的发言:

第一次打开慢,是因为.net在编译网站程序,所以第二次之后就快了。如果你不修改程序,就不需要重新编译,以后一直都快的,它能判断改动的文件影响到哪些,有针对性地重新编译,假如变动不大(比如不变动app_code文件夹中的代码),反应还是很快的。这是.net可以动态更新网站的实现方式。网站实际运行的是编译好后的dll程序,另外有地方放,跟源代码是脱离的。
说的有道理,但是你没具体说我该怎么操作哦。是装了。net 后,asp网站也是第一次打开比较慢。

ASP讨论QQ群:251346273
2012-08-11 14:53
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
你可以执行预编译,书上有说的,我通常不预编译,而只是复制文件到网站,让它执行第一次自动编译,因为第一个启动程序的往往是我自己。第一次就让它慢呗,编译是必不可少的,预编译也一样要时间,不过此时不是在打开网站而已。

授人以渔,不授人以鱼。
2012-08-11 15:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-375011-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.072579 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved