IIS6处理HTTP协议是依靠http.sys完 成的。如果系统的两个内存池:Nonpaged Pool与Paged Pool泄漏,导致系统资源耗尽,那么http.sys在处理连接时就会异常,产生各种各样的怪问题。一般在 httperr.log中可以查到错误原因:
2010-04-07 15:59:16 ServerA – – – – – – – – 34_Connections_Refused –
2010-04-07 15:59:22 ServerA – – – – – – – – 9_Connections_Refused –
2010-04-07 15:59:27 ServerA – – – – – – – – 34_Connections_Refused –
2010-04-07 15:59:32 ServerA – – – – – – – – 41_Connections_Refused –
2010-04-07 15:59:37 ServerA – – – – – – – – 16_Connections_Refused –
根据微软的KB可知当 NonPagedPool减少到20MB时,就会拒绝连接:
Connections_Refused The kernel NonPagedPool memory has dropped below 20MB and http.sys has stopped receiving new connections
通过nagios的监控图标,对比正常/异常服务器的System Nonpaged Pool走势,能很明显的看到内存泄漏。这种泄漏是最常见的,三角形的斜边非常平滑,符合内存泄漏的常态。
要抓罪魁祸首就要花时间了,微软的这个KB可以参考:
http://support.microsoft.com/kb/298102/