故障現象:
公司有一台用於DHCP服務+文件共享服務的服務器,操作系統為windows server 2003 企業版+SP2。打開任務管理器,發現一名為tcpsvcs.exe的進程,占用了約1.9G的虛擬內存。而與其使用類似功能的另一服務器,該進程只使用了不到10M的虛擬內存,差距巨大,明顯異常。
故障處理過程及原因:
上網查找tcpsvcs.exe的相關信息,得到的解釋的是:“tcpsvcs.exe是微軟Windows網絡組件的一部分。這個系統進程用於計算機使用專用的TCP/IP網絡服務,例如DHCP,簡單TCP和打印服務。這個程序對你系統的正常運行是非常重要的。”
進一步,打開命令提示符窗口,運行 tasklist /svc 命令,查看各進程所關聯的服務,看到如下的結果:
svchost.exe 1904 TapiSrv
svchost.exe 1916 TermService
tcpsvcs.exe 2032 DHCPServer
mcshield.exe 2076 McShield
svchost.exe 2240 W3SVC
可見,在本機上,tcpsvcs.exe只與DHCP服務有關。
嘗試將DHCP服務重啟,發現虛擬內存立即恢復至正常。第二天一早,再次查看,發現虛擬內存又達到了1.9G。和另一台正常的DHCP服務器,比較DHCP服務中設置的相關參數,未發現異常。
求助於互聯網這個百科全書,輸入相關內容進行搜索,並沒有發現什麼有價值的內容。又訪問微軟的支持與幫助中心http://support.microsoft.com ,經查找,發現了一條與我所述情況非常接近的知識庫文章 http://support.microsoft.com/kb/939928/zh-cn。按該文章的說法:“因為 Dnsapi.dll 模塊未正確管理一些內存資源,將出現此問題。”而且,如果關閉DHCP配置參數中的DNS動態更新設置,這個問題就不會出現。經測試,發現我的情況確實如此。
解決方法:
方法一:禁用DHCP的DNS動態更新功能
1、單擊開始,單擊運行,鍵入dhcpmgmt.msc,然後單擊確定
2、在控制台樹中,用鼠標右鍵單擊對應於 DHCP 服務器的節點,然後單擊屬性
3、在DNS選項卡上,單擊以清除根據下面的設置啟用 DNS 動態更新復選框,然後單擊確定
4、重新啟動 DHCP 服務器服務。例如,在命令提示符下鍵入以下命令,然後按 ENTER 鍵:Net stopDHCPServer & & Netstart DHCPServer
這個方法適合於沒有DNS動態更新需要的情況。但如果有內部的DNS服務,且需要通過DHCP服務,將DHCP客戶端的機器名與IP地址的映射關系更新到DNS服務中,以實現通過機器名訪問內部電腦的需求的話,這個功能是不能禁用的。
方法二:更新補丁
微軟已針對該問題有了補丁,但由於windows server 2003 的SP3 服務包還沒有發布,所以,只能單獨下載。下載的方法如下:
1、打開該知識庫文章 http://support.microsoft.com/kb/939928/zh-cn
2、點擊頁面上端的“可用熱修復補丁程序”後,會自動跳轉至相應的下載頁面。
3、選擇相應版本的補丁程序,並輸入你的郵箱地址並提交後。會將相應的下載地址發到你填寫的郵箱中。按郵件的說明和鏈接下載即可。
這個方法是根本的解決之道。但也有一定的風險,如果選擇版本錯誤,或者因為一些其它原因,安裝後,可能會出現其它的問題。所以,用這個方法前,一定要仔細確認你的問題,是否與知識庫文章中所述的一致,確認選擇的補丁版本是正確的,確認你的windows server 2003 是已經打了SP1或SP2的等。