IIS的程序池默认回收间隔是1740分钟(29小时),在自动回收过程中,应用程序池将会清空,保留在内存中的数据将会被清理(相当于IIS重启)。对于互联网应用程序,为了减少数据库服务器的负担,也许会选择将大量数据暂存在内存中,回收会造成内存数据丢失,如果没有及时保存到数据库中,可能导致应用程序出问题。如果遇到系统使用高峰期,回收将可能导致一段时间应用程序无响应(出现假死状态),给予用户一种很不好的体验。
在优化应用程序池之前,我们应用先了解下程序池的几个配置信息:
IIS应用程序池
发生配置更改时禁止回收:如果为True,应用程序池在发生配置更改时将不会回收。
固定时间间隔(分钟):超过设置的时间后,应用程序池回收,为0意味着应用程序池不会按固定间隔回收。
系统默认设置的时间是1740分钟(29小时)。
禁用重叠回收: 如果为true,将发生应用程序池回收,以便在创建另一个工作进程之前退出现有工作进程。
请求限制: 应用程序池在回收之前可以处理的最大请求数。如果值为0,则表示应用程序池可以处理的请求数没有限制。
生成回收事件日志条目: 每发生一次指定的回收事件时便产生一个事件日志条目,里面的明细设置不一一介绍。
问题分析:每1740分钟(29小时)回收一次是否合理?
不太合理,这个周期内,有可能应用程序处于访问高峰期。因为每天的回收时间都是不一样的,很有可能在高峰期回收,就会造成短时间内网站访问出现问题。因此,要避免最大程度的减少对用户的影响,我们需要充分的分析应用程序的访问情况,例如哪个时间段是高峰,
哪个时间段访问人数最少。了解到这些后,应用程序部署人员就应该设定固定的回收时间,例如一个网站凌晨两点访问人数是最少的,那么它可以设置“特定回收时间”在凌晨两点,应用程序池里面的特定时间是支持设定多个的,请注意。
1.不同的站用不同的应用程序池.方法:应用程序池-新建-应用程序池-名称可自定义,然后设置,网站-属性-主目录-应用程序池,选择刚新建的应用程序池.2.应用程序池优化.方法:应用程序池-选择要优化的那个程序池-属性-回收工作进程(分钟)设为200的.最大虚拟内存300,最大使用的内存150.大家可以根据网站需求做出一些调整.
3.IIS网站优化:A,网站-启用日志记录,勾掉,这功能没啥用.B,文档-默认内容文档,把除了网站首页文件名名称的其它内容文档删掉,因为每次访问网站首页的时候都要查询一下这个.C,网站-主目录-读取(勾上),索引资源(勾上),写入(勾上),主目录-配置-应用程序扩展,只保留网站需要扩展名,如ASP.PHP,其它的可以全部删呢.
4.WEB 服务扩展优化.有ASP程序网站的启用Active Server Pages,有PHP程序网站的启用PHP服务,没有则禁止,其它的服务扩展如不是自己设置的可以禁止.
5.GZIP 压缩.让网页体积变小,方法:WEB服务扩展-添加一个新的WEB服务扩展-扩展名就填写(GZIP)吧,这样好记些.-要求的文件-添加 C:\WINDOWS\system32\inetsrv\gzip.dll 一般就是这个路径,-设置状态扩展为允许.然后在返回网站-属性-服务-压缩应用程序文件(勾上),压缩静态文件(勾上),临时目录自己在硬盘设定一个,要有IIS_WPG 这个用户的完全权限.编辑C:\WINDOWS\system32\inetsrv目录下的MetaBase.xml文件.编辑文件的时候要暂停IIS Admin Service服务,用文本打开MetaBase.xml 搜索 IIsCompressionScheme 主要修改HcFileExtensions和HcScriptFileExtensions 后边的参数.
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="TRUE"
HcDynamicCompressionLevel="9"
HcFileExtensions="css
html
js
xml"
HcOnDemandCompLevel="9"
HcPriority="1"
HcScriptFileExtensions="asp
php"
注意啊.要修改相同的两处.
修改完成后,保存.然后重启IIS服务,或者重启器,就能看到效果呢.
先简单说一下很多时候是由于网站空间服务器的配置
或者资源限制导致的不足以承受运行的情况
有些是买的时候
不知道有所限制
而不能满足程序的运营需求
最好是联系服务商查阅相关日志
对症下药
如果撑不住最好换机器
-----------------------------------------
出现这种情况是由于您的网站超过了系统资源限制(CPU或者IIS)造成的,
这个现象在WINDOWS2003+IIS6的环境下都会出现,主要是程序占用资源太多。
不同的程序占用的资源都不一样,这个跟程序设计的合理性和优化程度有关;
另外,一些死循环程序,或者不优化的程序都会占用太多的系统资源,而系统资源明显是有限的。
如果一个网站的程序占资源太多或者发生太多的错误,系统日志就会提示:“应用程序池
'User_pooll'
被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误,
或者提示:应用程序池
'User_pooll'
超过了其作业限制设置。
有关更多信息,请参阅微软官方
http://go.microsoft.com/fwlink/events.asp
的帮助和支持中心。
这时,访问这个网站就会提示:Service
Unavailable。
一般系统会在30秒左右恢复正常,多刷新几次就能正常访问了。但是这个时间恢复后因为访问量太大在极短的时间网站又不能上了。
另外,如果网站当前访问人数过多,超过了系统的iis连接数(或CPU峰值)限制,也会出现Service
Unavailable的提示(win2k主机下出现连接过多就会提示:连接过多,请稍后再试;而win2003的主机刚直接提示:Service
Unavailable)如果经常出现类似的错误,请及时优化网站程序,或者升级你的主机至更高的款型,以获得更多的系统资源。
网站超CPU的四种可能原因:
一.网站攻击
二.程序设计不合理,资源占用高,或本身在做占资源的 *** 作,如采集
三.访问量过大
四.有搜索蜘蛛收录
程序占用资源太多的原因:
有一个或多个ACCESS数据库在多次读写过程中损坏,微软的MDAC系统在写入这个损坏的ACCESS文件时,ASP线程处于BLOCK状态,结果其他线程只能等待,IIS被死锁了,全部的CPU时间都消耗在DLLHOST(ASP进程)中。
参考解决办法:
压缩和修复我的数据库
下载数据库文件--[如果是.asp的扩展名,请改为.mdb的扩展名]--用ACCESS打开--选择工具--数据库实用工具--压缩和修复数据库--[改回.asp的扩展名]--上传覆盖原来数据库文件
注册了不良的Com组件,特别是用VB开发的ACTIVE
X控件,可能导致占用内存使用量不断增长
参考解决办法:尽量减少或避免非官方或是客户要求的不必要的组件
多媒体等文件下载占用服务器带宽
参考解决办法:停止下载
程序问题
需要及时的关闭不再使用的数据库,以避免一直占用服务器资源
在conn.asp
连接数据库字符串语句中加入如下
sub
endConnection()
conn.close
set
conn=nothing
end
sub
其它程序问题:把IE选项里
显示友好HTTP错误信息
的勾取消掉,再访问网站看出现什么错误信息,然后再调试
上传重要的数据库等文件更新,由于正处于受访问状态,可能导致瞬间占用率上升
一般此情况较少,若有出现此情况时,可能有必要先暂停站点,再作更新
ACCESS论坛(如动W)大了以后就很容易出现数据库方面的问题,当你的论坛数据库在30M以上,帖子5万左右,可能就会出现数据库吃不消的情况
建议取消程序中使用的on
error
resume
next这个容错语句,对错误进行调试。
临时解决办法:定期删除多余的数据、压缩数据库,限制论坛灌水,甚至限制论坛注册。如果是ASP论坛,可以使用分表储存功能,会有较好的效果
比较长远办法:更换论坛和数据库,一般都采用商业版本+MSSQL
的方案来解决
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)