服務器的CPU使用率高通常可以歸因于一些系統進程,其中包括Dllhost進程和Services進程。以下是對這兩個進程導致高CPU使用率的問題及相應的解決方法的詳細說明:
1. Dllhost進程:
特征:正常情況下,服務器的CPU使用率應該在75%以下,并且應該有上下波動。然而,出現問題的服務器上,CPU使用率會突然達到100%,并且持續保持在該水平,不會降下來。在任務管理器中查看,可以發現DLLHOST.EXE進程占用了所有的CPU空閑時間。管理員在這種情況下只能重新啟動IIS服務,奇怪的是,重新啟動IIS服務后一切正常,但問題可能會在一段時間后再次出現。
直接原因:一個或多個ACCESS數據庫在多次讀寫過程中損壞,當微軟的MDAC系統嘗試寫入這些損壞的ACCESS文件時,ASP線程會進入阻塞狀態,導致其他線程只能等待。這導致了IIS的死鎖,使得全部CPU時間都被DLLHOST進程消耗。
解決辦法:安裝名為"一流信息監控攔截系統"的軟件,并使用其中的"首席文件檢查官IIS健康檢查官"功能。啟用"查找死鎖模塊",并設置監控的目錄路徑。當問題出現時,停止IIS服務,運行"首席文件檢查官IIS健康檢查官",它會在生成的日志文件(logblock.htm)中記錄最后寫入的ACCESS文件。定位到最后的十個文件中可能有問題的文件,通常是計數器類的ACCESS文件,例如"**COUNT.MDB"或"**COUNT.ASP"。首先將這些文件刪除到回收站,然后重新啟動IIS,觀察問題是否再次出現。一旦找到問題所在,可以刪除該文件或使用ACCESS 2000進行修復,從而解決問題。
2. Services進程:
癥狀:在基于Windows 2000的計算機上,Services.exe進程的CPU使用率可能間歇性地達到100%,并且計算機可能停止響應(掛起)。出現此問題時,連接到該計算機的用戶(如果它是文件服務器或域控制器)會被斷開連接,可能需要重新啟動計算機。這種狀況出現是因為Esent.dll錯誤地處理將文件刷新到磁盤的方式。
修復程序信息:Microsoft提供了受支持的修補程序來解決這個問題。然而,該修補程序只是為了解決本文所描述的特定問題。只有在計算機遇到本文提到的特定問題時才應用此修補程序。此修補程序可能還經過其他一些測試。因此,如果該問題沒有對您造成嚴重影響,建議您等待包含此修補程序的下一個Windows 2000 Service Pack發布。
注意:在特殊情況下,如果Microsoft支持專業人員確定某個特定更新程序能夠解決您的問題,您可能免除通常情況下的電話支持服務費用。然而,對于無法通過特定更新程序解決的其他支持問題和事項,可能會收取正常的支持費用。