前段时间公司做了个活动网站,该网站用作抽奖活动,基本状况如下:
1.基于win2003 sp2 + asp.net 3.5 + IIS6.0(独立应用程序池)
2.网站并不大,处理流量也不算多,每秒要处理15次左右的数据,每次数据操作涉及5张表的sql操作,以及一次webservice的接口调用
3.WEB SERVER与DB SERVER各一台(4核cpu,2G内存)
目前经常(每天)在较大流量下都会出现无法访问的情况,查事件查看器如下错误:
----------------------------------------------------------------------------------------------------
源: W3SVC 事件 ID: 1011 处理应用程序池 ' AppPool ' A 进程遇到与 World Wide Web 发布服务致命通信错误。 进程 ID 为 ' 5684 '。 数据字段包含错误号。 错误号: 8007006d
----------------------------------------------------------------------------------------------------
服务器状况:DB SERVER的状况良好,CPU占用维持在30%以内,WEB SERVER的状况是CPU占用偶尔会上升到100%,但在几十秒内迅速回落到正常30%左右。内存使用量都很正常。
查看IIS错误日志,可以确定是应用程序池出现了错误,而且有个问题是几次间歇性出错,但并未导致IIS无法访问,可是如果连续某段时间(10分钟左右)有多次(一般5-6次)出现这个报错,IIS就会无法访问,于是我想可能是应用程序池的设置问题,认为核心队列请求可能已经超出队列最大值,导致IIS无法访问,我对IIS进行了设置修改:之前已经设置过:应用程序池--》属性--》运行状态--》启动快速失败保护,已设置为否
1.应用程序池--》属性--》回收--》回收工作进程,初始值为1740(分),修改到600
2.应用程序池--》属性--》性能--》核心队列请求,初始值为1000,修改到5000
目前网站处于正常状态,但是目前的情况是网站流量已经比以前降低了1/3左右,所以这还无法确认是否是这些设置起到了实质性的作用。
在baidu,google上找了不少资料,但没有真正解决过此问题的朋友谈下解决方案。 很是疑惑,希望能与各位能够探讨下,如能不吝指教,小弟万分感谢!