隨筆 - 251  文章 - 504  trackbacks - 0
          <2006年8月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          本博客系個(gè)人收集材料及學(xué)習(xí)記錄之用,各類(lèi)“大俠”勿擾!

          留言簿(14)

          隨筆分類(lèi)

          收藏夾

          My Favorite Web Sites

          名Bloger

          非著名Bloger

          搜索

          •  

          積分與排名

          • 積分 - 202838
          • 排名 - 284

          最新評(píng)論

          故障描述:

          剛剛接到一個(gè)用戶(hù)反饋,說(shuō)他每次開(kāi)機(jī)以后發(fā)現(xiàn) spoolsv.exe 進(jìn)程消耗了大量的CPU資源(70%),嚴(yán)重影響了系統(tǒng)的運(yùn)行,懷疑是計(jì)算機(jī)病毒,向我求救。

          故障檢查:

          根據(jù)他的描述,我首先檢查了 Print Spooler 服務(wù)的加載方式等內(nèi)容。

          1. 打開(kāi)注冊(cè)表編輯器
          2. 定位到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler
          3. 檢查這個(gè)鍵以及子鍵的內(nèi)容是否正確。

          經(jīng)查,故障系統(tǒng)的鍵完全正確,沒(méi)有問(wèn)題。但是為什么會(huì)有?spoolsv.exe 進(jìn)程消耗了大量的CPU資源的問(wèn)題呢?

          有人可能會(huì)問(wèn),spoolsv.exe 進(jìn)程是不是計(jì)算機(jī)病毒的進(jìn)程,這一點(diǎn)很容易確認(rèn)的。正確的 spoolsv.exe 進(jìn)程的映像文件路徑肯定是%SystemRoot%\System32\spoolsv.exe ,因?yàn)楦鶕?jù)Windows System File Check 的原理,如果說(shuō)%SystemRoot%\System32\spoolsv.exe 被替換的話(huà),Windows系統(tǒng)文件保護(hù)裝置會(huì)從DllCache里面把正確的文件替換。所以在大多數(shù)情況下是可以相信 %SystemRoot%\System32\spoolsv.exe 文件是正確的。而故障系統(tǒng) spoolsv.exe 進(jìn)程的映像文件路徑的確是%SystemRoot%\System32\spoolsv.exe,因此 spoolsv.exe 進(jìn)程沒(méi)有問(wèn)題。

          ???*注:有些特殊的方法可以繞開(kāi)這個(gè)保護(hù),這里不進(jìn)行討論。

          根據(jù)以往知識(shí),我們知道 Print Spooler 服務(wù)是用于維護(hù)一個(gè)打印列表的。所以我懷疑是由于某個(gè)打印列表造成了 Print Spooler 服務(wù)占用了大量的CPU資源。在進(jìn)行以下嘗試以后我大致知道的問(wèn)題的原因:

          1. 先啟動(dòng) Print Spooler 服務(wù),讓 spoolsv.exe 進(jìn)程消耗大量的CPU資源。
          2. 這個(gè)時(shí)候啟動(dòng) Process Explorer,然后選擇 spoolsv.exe 進(jìn)程,雙擊這個(gè)進(jìn)程,再選擇線(xiàn)程選項(xiàng)卡。在線(xiàn)程選項(xiàng)卡里面,我發(fā)現(xiàn) CreateThread API函數(shù)的調(diào)用占用了很高的 CPU 資源。問(wèn)題應(yīng)該就出在這里,由于某種特殊的原因,導(dǎo)致 CreateThread 在創(chuàng)建線(xiàn)程的時(shí)候出現(xiàn)了死循環(huán),從而導(dǎo)致spoolsv.exe 進(jìn)程消耗大量的CPU資源。

          再,我們知道每當(dāng)創(chuàng)建一個(gè)打印任務(wù)以后,會(huì)在 %SystemRoot%\System32\spool\PRINTERS 目錄下創(chuàng)建2個(gè)文件,擴(kuò)展名分別為 SHD 和 SPL。如果估計(jì)沒(méi)錯(cuò),肯定是這里出現(xiàn)問(wèn)題了。遠(yuǎn)程控制,打開(kāi) %SystemRoot%\System32\spool\PRINTERS 目錄檢查,果然發(fā)現(xiàn)有2個(gè)文件,擴(kuò)展名分別為 SHD 和 SPL,如果刪除這2個(gè)文件會(huì)不會(huì)解決 spoolsv.exe 進(jìn)程消耗大量的CPU資源的問(wèn)題呢?

          故障處理:

          嘗試先把? Print Spooler 服務(wù)停止掉,然后再把 %SystemRoot%\System32\spool\PRINTERS 目錄下的 SHD 和 SPL 文件刪除,重新啟動(dòng)? Print Spooler 服務(wù),故障排除。

          故障分析:

          Print Spooler 服務(wù)啟動(dòng)的時(shí)候會(huì)檢查打印隊(duì)列,如果發(fā)現(xiàn)有未完成的隊(duì)列則會(huì)嘗試執(zhí)行,如果隊(duì)列文件被破壞,則可造成 Print Spooler 服務(wù)執(zhí)行的時(shí)候出現(xiàn)死循環(huán),導(dǎo)致 spoolsv.exe 進(jìn)程消耗大量的CPU資源.

          SPL文件為當(dāng)前脫機(jī)文件,包含當(dāng)前打印任務(wù)。
          SHD文件為當(dāng)前脫機(jī)打印的信息文件,包含誰(shuí)發(fā)起了打印任務(wù),打印任務(wù)中的隊(duì)列信息,以及該打印任務(wù)發(fā)送到哪里等等信息。
          此外還伴隨一些TMP文件,如果SPL、SHD文件出現(xiàn)問(wèn)題,或者打印隊(duì)列送往無(wú)效打印機(jī),又或者送往的打印驅(qū)動(dòng)模塊無(wú)法正確響應(yīng),這可能導(dǎo)致spoolsv.exe進(jìn)行反復(fù)嘗試,進(jìn)而占用大量CPU資源,這個(gè)現(xiàn)象有可能導(dǎo)致系統(tǒng)掛起。

          posted on 2006-08-13 11:00 matthew 閱讀(4083) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 雜錄
          主站蜘蛛池模板: 读书| 西乌珠穆沁旗| 东兴市| 阳春市| 临夏县| 瑞昌市| 聊城市| 蓝山县| 武陟县| 安义县| 额尔古纳市| 临清市| 五峰| 新龙县| 万载县| 通化县| 丁青县| 东丰县| 重庆市| 南平市| 玉门市| 通山县| 康定县| 汤原县| 微山县| 若尔盖县| 伊通| 苏尼特左旗| 拉萨市| 策勒县| 怀安县| 乌拉特中旗| 浮梁县| 桐庐县| 新干县| 乌兰察布市| 绥中县| 甘肃省| 永川市| 大庆市| 卢龙县|