一、背景和現(xiàn)象
績溪網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)成立與2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
初創(chuàng)公司,架構(gòu)lanmp,web前端和后端分開服務(wù)器,業(yè)務(wù)驅(qū)動主要是nginx和apache,nginx主要是處理靜態(tài)文件和反向代理,前后端、搜索引擎、緩存、隊(duì)列等附加的服務(wù)都是用docker容器部署。因?yàn)楸容^初級,上傳文件和采集文件都是直接寫在硬盤上,涉及到的目錄共享,就在其中一臺服務(wù)器存儲并且nfs共享。我們暫且分為ECS1(apache1)、ECS2(apache2)、ECS3(nginx)。某天網(wǎng)站業(yè)務(wù)中斷,但是沒有報錯。一直在等待響應(yīng),默認(rèn)響應(yīng)超時是一分鐘,所以很基礎(chǔ)高可用沒有起到作用。中斷10分鐘左右,重啟服務(wù),提示“open too many files”,但是lsof統(tǒng)計沒幾個。因?yàn)槌跫壧幚聿涣耍灾苯又貑⒎?wù)器,一段時間后一切差攜恢復(fù)正常,可是第二天又來一次這種情況。
二、第一次出現(xiàn)后的排查思路
本來第一次發(fā)現(xiàn)這種問題的時候就要追查原因了,看了一下zabbix監(jiān)控圖像其中斷了十分鐘,包括網(wǎng)絡(luò)、內(nèi)存、CPU、硬盤、IO等監(jiān)控數(shù)據(jù)。首先想到的是網(wǎng)絡(luò)問題,結(jié)論是zabbix-servert獲取不到了zabbix-agent采集的數(shù)據(jù),估計就是網(wǎng)絡(luò)不通了。
但是,這個結(jié)論站不住腳,因?yàn)槲冶旧硗ㄟ^ssh登錄服務(wù)器,并且命令輸入無卡頓,不至于頭文件都傳不過來。后來一看阿里云的云監(jiān)控,上面有數(shù)據(jù),似乎也可以佐證網(wǎng)絡(luò)這個說法,因?yàn)樵票O(jiān)控是阿里云內(nèi)部的監(jiān)控,可以內(nèi)網(wǎng)獲取到監(jiān)控數(shù)據(jù)。直到看CPU的使用率這項(xiàng),發(fā)現(xiàn)有一段時間的CPU使用率100%。并且我重啟的時候CPU恢復(fù)正常,不能說網(wǎng)絡(luò)一定沒問題,但系統(tǒng)肯定有問題。也可以解釋因?yàn)镃PU使用已經(jīng)是100%,zabbix-agent和根本不能正常運(yùn)行,所以沒有監(jiān)控數(shù)據(jù)。因?yàn)檫@個公司全部都是云服務(wù)器,沒有使用IDC所以我們也沒有安裝smokeping來監(jiān)控,接著虛頃伏我們就不把重心在網(wǎng)絡(luò)上了。
目前掌握的信息就是:在毫無征兆的情況下,CPU暴漲到100%,重啟之前一直保留,重啟之后恢復(fù)原樣。匆忙之中又看了一下系統(tǒng)各日志,因?yàn)樘颐?,沒有總結(jié),沒有找到什么有價值的東西?,F(xiàn)在有下面幾種猜想:第一,程序的bug或者部署不當(dāng),觸發(fā)之后耗盡資源。第二、docker容器的bug。第三、網(wǎng)絡(luò)攻擊。第四、病毒入侵。第五、阿里云方系統(tǒng)不穩(wěn)定。
小總結(jié)了一下,現(xiàn)在問題還沒有找出來。下次還有這個問題的可能,所以先盡量防范,但是又不能重啟一刀切。所以在zabbix上面設(shè)置了自動化,當(dāng)檢測到ECS1獲取不到數(shù)據(jù)的時候馬上操作ECS3標(biāo)記后端為ECS1的apache為down。保留異常現(xiàn)場。(請求停止的時候,CPU100%還在)
三、現(xiàn)場排查
1、相應(yīng)的排查計劃(想到這些信息需要獲取的,實(shí)際上沒有嚴(yán)格按照這樣的步驟)
1)用htop和top命令監(jiān)控CPU、內(nèi)存使用大的進(jìn)程。先看看哪個進(jìn)程消耗資源較多,用戶態(tài)、內(nèi)核態(tài)、內(nèi)存、IO……同時sar -b查io的 歷史 定時抽樣。
2)統(tǒng)計tcp連接數(shù),看看有沒有DDOS攻擊。netstat -anp |grep tcp |wc -l 。用iftop-i eth1看看通訊。同時用tail -n 1200 /var/log/messages查看內(nèi)核日志。
3)用pstree查看打開進(jìn)程,ps aux|wc-l看看有沒有特別多的進(jìn)程。雖然zabbix監(jiān)控上說沒有,但是我們要檢查一下看看有沒有異常的進(jìn)程名字。
4)查看全部容器的資源使用docker stats $(docker ps -a -q),看看能不能從容器上排查。
5)有了“too many open files”的啟發(fā),計算打開文件數(shù)目lsof|wc -l,根據(jù)進(jìn)程看看ll /proc/PID/fd文件描述符有沒有可疑的打開文件、文件描述符。
6)關(guān)于用lsof打開文件數(shù)找到的線索,排序打開文乎源件找出進(jìn)程號 lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more
7)關(guān)于用lsof打開文件數(shù)找到的線索,用lsof -p PID查看進(jìn)程打開的句柄。直接查看打開的文件。
8)啟動容器的時候又總是“open too many files"。那就是打開文件數(shù)的問題,因?yàn)镃PU的使用率是CPU的使用時間和空閑時間比,有可能因?yàn)榇蜷_文件數(shù)阻塞而導(dǎo)致CPU都在等待。針對連接數(shù)的問題,大不了最后一步試試echo 6553500 /proc/sys/fs/file-max 測試打開文件對CPU的影響。
9)玩意測出來了消耗CPU的進(jìn)程,可以使用strace最終程序。用戶態(tài)的函數(shù)調(diào)用跟蹤用「ltrace」,所以這里我們應(yīng)該用「strace」-p PID
10)從程序里面看到調(diào)用系統(tǒng)底層的函數(shù)可以跟蹤。跟蹤操作 strace -T -e * -p PID,主要看看代碼調(diào)用的函數(shù)有沒有問題。
2、現(xiàn)場排查
第二天同樣時間,ECS果然暴漲了CPU。這是時候zabbix的工作如希望進(jìn)行保留了一臺故障的ECS1給我。
1)用htop看到資源使用最大是,搜索引擎下我寫的一個判斷腳本xunsearch.sh。腳本里面很簡單,判斷索引和搜索服務(wù)缺一個就全部重啟。就當(dāng)是我的容器有問題我直接關(guān)掉搜索引擎容器。httpd頂上,我又關(guān)掉apache容器。rabbitmq相關(guān)進(jìn)程又頂上。這時候我沒心情周旋了,肯定不也是這個原因。sar -b查看的 歷史 io也沒有異常。
2)統(tǒng)計tcp連接,幾百。先不用著重考慮攻擊了。用tail -n 1200 /var/log/messages查看內(nèi)核日志,是TCP TIME WAIT的錯誤??梢岳斫鉃镃PU使用100%,程序無響應(yīng)外面的tcp請求超時。這是結(jié)果,還是沒有找到根本原因。
接著往下看系統(tǒng)內(nèi)核日志,發(fā)現(xiàn)了和“open too many files”呼應(yīng)的錯誤,“file-max limit 65535 reached”意思是,已到達(dá)了文件限制瓶頸。這里保持懷疑,繼續(xù)收集其他信息。
3)查看進(jìn)程數(shù)量,數(shù)量幾百。列出來也看到都是熟悉的進(jìn)程,可以先排除異常進(jìn)程。
4)監(jiān)控容器的資源使用,里面很不穩(wěn)定,首先是xunsearch容器使用80%的CPU,關(guān)掉xunsearch,又變成了其他容器使用CPU最高。很大程度上可以排查容器的問題和執(zhí)行程序的問題。
5)查看了最大連接數(shù)cat /proc/sys/fs/file-max是65535但是用lsof查到的連接數(shù)是10000多,完全沒有達(dá)到連接數(shù)。
6)各項(xiàng)參數(shù)都正常,現(xiàn)在聚焦在打開的文件數(shù)這個問題上面。也可以用另外同一種方式查看一下內(nèi)核統(tǒng)計文件 /proc/sys/fs/file-nr,比較一下差異,看看能不能找出問題。cat了一下,打開文件數(shù)是66080,果然超了!內(nèi)核日志就以這個為標(biāo)準(zhǔn)。
但是看lsof怎么統(tǒng)計不出來,ll /proc/PID/fd也沒幾個。這個問題放在后面,先按照步驟echo 6553500 /proc/sys/fs/file-max給連接數(shù)提高到100倍,CPU果然降了下來。原因確認(rèn)了,但是必須找到根源,為什么忽然有這么大的打開文件數(shù)。關(guān)掉全部docker容器和docker引擎,打開文件數(shù)是少了一點(diǎn),但是仍然在65535差不多。我就先排除一下業(yè)務(wù)的影響,把ECS3的nginx直接指向視頻ECS2的apache,就等同于在ECS2上實(shí)現(xiàn)了ECS1的場景。查看一下ECS2的句柄數(shù),才4000多,排除了業(yè)務(wù)相關(guān)應(yīng)用對服務(wù)器的影響。那就能下個小結(jié)論,ECS1被神秘程序打開了6萬多句柄數(shù),打開業(yè)務(wù)就多了2000多的句柄數(shù),然后就崩潰了。不過這個現(xiàn)象有點(diǎn)奇怪,ECS2和ECS1在一樣的機(jī)房一樣的配置一樣的網(wǎng)絡(luò)環(huán)境,一樣的操作系統(tǒng),一樣的服務(wù),一樣的容器,為什么一個有問題,一個沒問題呢?不同的只是有一臺是共享nfs。難道是靜態(tài)文件共享了,其他人讀了,也算是本服務(wù)器打開的?
7)現(xiàn)在程序找不到,沒法繼續(xù)lsof -p了。排查之前的猜想。帶著排查得到對的結(jié)論往下想。
程序的bug和部署不當(dāng),那是不可能的,因?yàn)橹饕獑栴}來自于打開句柄數(shù),當(dāng)部署到ECS2那里,一切正常。docker容器的bug,那也不可能的,每個都是我親自寫腳本,親自編譯,親自構(gòu)建的,關(guān)鍵是我關(guān)掉了docker容器和引擎都沒有很大改善。網(wǎng)絡(luò)攻擊也排除,因?yàn)榫W(wǎng)絡(luò)連接數(shù)沒幾個,流量也不變。那就只剩下病毒入侵也不是,沒有異常進(jìn)程??紤]到ECS的穩(wěn)定性問題了。這方面就協(xié)助阿里云工程師去排查。
8)阿里云工程師用的排查手段和我差不多,最終也是沒能看到什么。也只是給了我一些治標(biāo)不治本的建議。后來上升到專家排查,專家直接在阿里云后端抓取了coredump文件分析打開的文件是圖片,程序是nfsd。
好像印證了我剛才后面的猜想,應(yīng)該就是ECS1使用了nfs共享其他服務(wù)器打開了然后算在ECS1頭上。那問題又來了,我們的業(yè)務(wù)已經(jīng)到達(dá)了可以影響服務(wù)器的程度嗎?
9)既然問題解決到這一步,先不管程序有沒有關(guān)閉打開的文件和nfs的配置。我們架構(gòu)上面的圖片應(yīng)該是歸nginx讀取,難道是linux的內(nèi)存機(jī)制讓它緩存了。帶著緩存的問題,首先去ECS3上釋放內(nèi)存echo 3 /proc/sys/vm/drop_caches,釋放之后,發(fā)現(xiàn)沒什么改善,有點(diǎn)失落??偸怯X得還有一臺后端是PHP主導(dǎo),但是邏輯上是寫入,沒有打開文件之說。后來從程序員中了解到,PHP也有打開圖片。我猛然去ECS2釋放一下內(nèi)存,果然,句柄數(shù)降下來。(這里大家一定有個疑問,為什么我直接想到內(nèi)存緩存而不是目前打開的文件呢。其一,這是生產(chǎn)環(huán)境,web前端只有一個,不能亂來停服務(wù)。其二,第一次遇到問題的時候,重啟之后沒有問題,過了一天之后積累到一定的程度才爆發(fā),這里已經(jīng)引導(dǎo)了我的思路是積累的問題,那就是緩存不斷積累了)
10)因?yàn)镋CS2的調(diào)用ECS1的nfs共享文件,所以lsof也有讀不到那么多句柄數(shù)的理由。如果說是nfs的服務(wù)本身就有緩存,導(dǎo)致問題的話,我查看了配置文件,還是默認(rèn)值允許緩存,30S過期,根本不會因?yàn)閚fs的緩存造成打開文件過多。如果我們的后端程序打開之后沒好好處理的話,那倒有可能。然后嘗試排除:我改了ECS3的配置,使程序只讀ECS1后端,從ECS1上面卻看不到有什么異常表現(xiàn),說明PHP程序已經(jīng)好好處理了打開的文件。也不是docker掛載了nfs的共享的問題,因?yàn)閚ginx也有掛載。排查到這里也很大程度上解決問題,而且緩存了nfs的全部共享文件,句柄并沒有增加,也算合理,所以就增加了打開文件數(shù)的限制。
11)現(xiàn)在排查的結(jié)果是跟后端和nfs共享有關(guān)。就是說,后端掛載了nfs的網(wǎng)絡(luò)共享,被程序讀取。而程序釋放之后,在正常背景的硬盤文件是沒有緩存的。但是在nfs掛載的環(huán)境下,緩存并沒有得到釋放。
12)總結(jié):很多問題的排查和我們的猜想結(jié)果一樣,但是有些例外的情況。比如這次我想到的原因都一一排除,但是問題也是在一步步排查中,逐步被發(fā)現(xiàn)的。
你好!
磁盤IO的問題是一方面,另外高訪問量的Web服務(wù)器也是不適宜判伍在物理內(nèi)存不足的情況下通過虛擬內(nèi)存運(yùn)行,因?yàn)閮?nèi)存中基本上所有數(shù)據(jù)都是熱數(shù)據(jù),所有數(shù)據(jù)被訪問的幾率相等,一旦物理內(nèi)存不足,會引發(fā)大量頁面交換操作,如果磁盤IO不行,凳運(yùn)一下就卡死了。
我用的是小鳥云服務(wù)器 不懂的都是問他們客服,客服還是比較專業(yè)的
希望我的回答能掘粗或給你帶來幫助!有問題請追問
相信你的一定遇到過電腦動彈不得的時候,或許是只能眼看鼠標(biāo)滑動而不能進(jìn)行任何操作的時候,很多人都會經(jīng)常遇到這樣的問題:CPU占用率100%改如何解決,本文將從多個角度給你全方面的解析,希望閱讀完本文希望在今后你遇到問題的時候能夠帶給你一些幫助。CPU經(jīng)常性占用率100%1、驅(qū)動沒有經(jīng)過認(rèn)證,造成CPU資源占用100%。大量的測試版的驅(qū)動在網(wǎng)上泛濫,造成了難以發(fā)現(xiàn)的故障原因。2、殺毒軟件CPU使用率占用100%現(xiàn)在的殺毒軟件一般都加入了,對網(wǎng)頁、郵件、個人隱私的即時監(jiān)汪余皮空功能,這樣無疑會加大系統(tǒng)的負(fù)擔(dān)。比如:在玩游戲的時候,會非常緩慢。關(guān)閉該殺毒軟件是解決得最直接辦法。3、病毒、木馬造成。出現(xiàn)CPU占用率100% 的故障經(jīng)常是因?yàn)椴《灸抉R造成的,比如震蕩波病毒。應(yīng)該首先更新病毒庫,對電腦進(jìn)行全機(jī)掃描。接著,在使用反間諜軟件Ad—Aware,檢查是否存在間諜軟件。論壇上有不少朋友都遇到過svchost.exe占用CPU100%,這個往往是中毒的表現(xiàn)。間諜廣告殺手Ad-awaresvchost.exe Windows中的系統(tǒng)服務(wù)是以動態(tài)鏈接庫(DLL)的形式實(shí)現(xiàn)的,其中一些會把可執(zhí)行程序指向svchost.exe,由它調(diào)用相應(yīng)服務(wù)的動態(tài)鏈接庫并加上相應(yīng)參數(shù)來啟動服務(wù)。正是因?yàn)樗奶厥庑院椭匾?,使它更容易成為了一些病毒木馬的宿主。大量的蠕蟲病毒在系統(tǒng)內(nèi)部迅速復(fù)制,造成CPU占用資源率據(jù)高不下。解決辦法:使用最新的殺毒軟件在DOS模式下進(jìn)行殺毒。經(jīng)常性更新升級殺毒軟件和防火墻,加強(qiáng)防困差毒意識,掌握正確的防殺毒知識。 4、開始->運(yùn)行->msconfig->啟動,關(guān)閉不必要的啟動項(xiàng),重啟。 5、網(wǎng)絡(luò)連接導(dǎo)致CPU使用率占用100%查看網(wǎng)絡(luò)連接。主要是網(wǎng)卡。當(dāng)你的Windows2000/xp作為服務(wù)器時,收到來自端口445上的連接請求后,系統(tǒng)將分配內(nèi)存和少量CPU資源來為這些連接提供服務(wù),當(dāng)負(fù)荷過重,就會出現(xiàn)上述情況。要解決這個問題可以通過修改注冊表來解決,打開注冊表,找到HKEY—LOCAL—MACHNESYSTEMCurrentControlSetServiceslanmanserver,在右面新建一個名為";maxworkitems";的DWORD值.然后雙擊該值,如果你的電腦有512以上內(nèi)存,就設(shè)置為";1024";,如果小于512,就設(shè)置為256.6、查看“svchost”進(jìn)程。 Svchost.exe是Windows XP系統(tǒng)的一個核心進(jìn)程。Svchost.exe不單單只出現(xiàn)在Windows XP中,在使用NT內(nèi)核的Windows系統(tǒng)中都會有Svchost.exe的存在。一般在Windows 2000中Svchost.exe進(jìn)程的數(shù)目為2個,而在Windows XP中Svchost.exe進(jìn)程的數(shù)目就上升到了4個及4個以上。 Svchost.exe的鍵值是在“HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsNTCurrentVersionSvchost”,每個鍵值表示一個獨(dú)立毀茄的Svchost.exe組。 微軟還為我們提供了一種察看系統(tǒng)正在運(yùn)行在Svchost.exe列表中的服務(wù)的方法。以Windows XP為例:在“運(yùn)行”中輸入:cmd,然后在命令行模式中輸入:tasklist /svc。系統(tǒng)列出服務(wù)列表。如果使用的是Windows 2000系統(tǒng)則把前面的“tasklist /svc”命令替換為:“tlist -s”即可。 如果你懷疑計算機(jī)有可能被病毒感染,Svchost.exe的服務(wù)出現(xiàn)異常的話通過搜索Svchost.exe文件就可以發(fā)現(xiàn)異常情況。一般只會找到一個在:“C:WindowsSystem32”目錄下的Svchost.exe程序。如果你在其他目錄下發(fā)現(xiàn)Svchost.exe程序的話,那很可能就是中毒了。 還有一種確認(rèn)Svchost.exe是否中毒的方法是在任務(wù)管理器中察看進(jìn)程的執(zhí)行路徑。但是由于在Windows系統(tǒng)自帶的任務(wù)管理器不能察看進(jìn)程路徑,所以要使用第三方的進(jìn)程察看工具。 上面簡單的介紹了Svchost.exe進(jìn)程的相關(guān)情況??偠灾?,Svchost.exe是一個系統(tǒng)的核心進(jìn)程,并不是病毒進(jìn)程。但由于Svchost.exe進(jìn)程的特殊性,所以病毒也會千方百計的入侵Svchost.exe。通過察看Svchost.exe進(jìn)程的執(zhí)行路徑可以確認(rèn)是否中毒。 7、把網(wǎng)卡、顯卡、聲卡卸載,然后重新安裝一下驅(qū)動。 8、重裝系統(tǒng)、常用軟件、當(dāng)然也要裝驅(qū)動。用幾天看一下,若不會出現(xiàn)這種問題,再裝上其他軟件,但是最好是一個軟件裝完,先用幾天?,F(xiàn)會出現(xiàn)問題再接著裝!特征:服務(wù)器正常CPU消耗應(yīng)該在75%以下,而且CPU消耗應(yīng)該是上下起伏的,出現(xiàn)這種問題的服務(wù)器,CPU會突然一直處100%的水平,而且不會下降。查看任務(wù)管理器,可以發(fā)現(xiàn)是DLLHOST.EXE消耗了所有的CPU空閑時間,dllhost進(jìn)程管理員在這種情況下,只好重新啟動IIS服務(wù),奇怪的是,重新啟動IIS服務(wù)后一切正常,但可能過了一段時間后,問題又再次出現(xiàn)了。直接原因:有一個或多個ACCESS數(shù)據(jù)庫在多次讀寫過程中損壞,微軟的MDAC系統(tǒng)在寫入這個損壞的ACCESS文件時,ASP線程處于BLOCK狀態(tài),結(jié)果其它線程只能等待,IIS被死鎖了,全部的CPU時間都消耗在DLLHOST中。解決辦法:安裝“一流信息監(jiān)控攔截系統(tǒng)”,使用其中的“首席文件檢查官IIS健康檢查官”軟件,啟用”查找死鎖模塊”,設(shè)置:--wblock=yes監(jiān)控的目錄,請指定您的主機(jī)的文件所在目錄:--wblockdir=d: est監(jiān)控生成的曰志的文件保存位置在安裝目錄的log目錄中,文件名為:logblock.htm停止IIS,再啟動“首席文件檢查官IIS健康檢查官”,再啟動IIS,“首席文件檢查官IIS健康檢查官”會在logblock.htm中記錄下最后寫入的ACCESS文件的。過了一段時間后,當(dāng)問題出來時,例如CPU會再次一直處100%的水平,可以停止IIS,檢查logblock.htm所記錄的最后的十個文件,注意,最有問題的往往是計數(shù)器類的ACCESS文件,例如:”**COUNT.MDB”,”**COUNT.ASP”,可以先把最后十個文件或有所懷疑的文件刪除到回收站中,再啟動IIS,看看問題是否再次出現(xiàn)。我們相信,經(jīng)過仔細(xì)的查找后,您肯定可以找到這個讓您操心了一段時間的文件的。找到這個文件后,可以刪除它,或下載下來,用ACCESS2000修復(fù)它,問題就解決了。要通過進(jìn)程列表查看系統(tǒng)是否染毒,必須打開當(dāng)前的執(zhí)行程序進(jìn)程列表,Microsoft的每種系統(tǒng)都有相應(yīng)的打開方法,但能夠顯示的能力卻因(系統(tǒng))不同,有所差異:Windows任務(wù)管理器下的進(jìn)程列表1.Windows 98 /Me系統(tǒng)打開系統(tǒng)進(jìn)程的方式很簡單,快捷鍵“Ctrl+Alt+Delete”,這個窗口大家應(yīng)該比較熟悉,使用Windows系統(tǒng)的用戶都知道用這個方法來關(guān)閉程序,不過它同樣用于顯示系統(tǒng)進(jìn)程,只是Windows98系統(tǒng)較初級,對進(jìn)程的顯示局限于名稱,且里面所顯示的還有打開的文件及目錄名,查看時易混淆。WindowsMe的進(jìn)程打開方式和Windows 98相同。Windows 9X系統(tǒng)打開的進(jìn)程列表混亂且不完全,顯然不便于查看系統(tǒng)的具體進(jìn)程狀況,所以建議使用一些工具程序來為Windows 9x系統(tǒng)顯示進(jìn)程,如“Windows優(yōu)化大師”,在“優(yōu)化大師”的“系統(tǒng)安全優(yōu)化”項(xiàng)內(nèi)打開“進(jìn)程管理”,在圖2所示的“Windows 進(jìn)程管理”窗口內(nèi),可以詳細(xì)查看當(dāng)前計算機(jī)所運(yùn)行的所有進(jìn)程,及具體程序所在的位置,這樣更方便完成后面要介紹的如何利用進(jìn)程進(jìn)行查毒、殺毒。2.Windows 2000/ XP/2003系統(tǒng)Windows 2000、Windows XP、Windows 2003打開進(jìn)程窗口的方式與Windows 9x系統(tǒng)相同,只是三鍵后打開的是“Windows 任務(wù)管理器”窗口,需要選擇里面的“進(jìn)程”項(xiàng)。Windows 2000系統(tǒng)只顯示具體進(jìn)程的全名,占用的內(nèi)存量;Windows XP、Windows 2003系統(tǒng)相比Windows 2000會顯示該進(jìn)程歸屬于那個用戶下,如操作系統(tǒng)所必須的基礎(chǔ)程序,會在后面的“用戶名”內(nèi)顯示為“SYSTEM”,由用戶另外開啟的程序則用戶名為當(dāng)前的系統(tǒng)登錄用戶名。進(jìn)程發(fā)現(xiàn)病毒在介紹具體的查毒和殺毒前,筆者先回答開篇提出的兩個問題。為什幺殺毒軟件并不能全面的查找和殺掉病毒?首先,病毒防火墻是通過對程序進(jìn)行反匯編,然后與自己的病毒庫進(jìn)行對比來查找病毒,如果病毒較新,而殺毒軟件又未能及時升級便不能識別病毒。 電腦蠕蟲病毒襲擊多臺電腦。其次,殺毒軟件在發(fā)現(xiàn)病毒后,如果是獨(dú)立的可執(zhí)行病毒程序,會選擇直接刪除的處理方式,而病毒如果被當(dāng)作進(jìn)程執(zhí)行了,殺毒軟件就無能為力了,因?yàn)樗鼪]有功能和權(quán)限先停止掉系統(tǒng)的這些進(jìn)程,被當(dāng)作進(jìn)程執(zhí)行的程序是不能被刪除的(這也是大家在刪除一個程序時,提示該程序正在被使用不能刪除的原因)。所以在使用殺毒軟件殺毒時,才會有殺毒完成后,又出現(xiàn)病毒提示的原因?!∮汕懊娴闹R介紹可知,Windows 9X和Windows2000系統(tǒng)只能顯示進(jìn)程的名稱,這對判斷該進(jìn)程是否是病毒還不夠,如果要準(zhǔn)確的斷定病毒,最好使用前面介紹的“Windows優(yōu)化大師”來查看進(jìn)程程序的源路徑。如果是“C:Windowssystem”下的一些未知的“EXE”那便極有病毒的可能性了。Windows XP和Windows 2003系統(tǒng),進(jìn)程后會有“用戶名”的顯示,病毒是不可能獲得“SYSTEM”權(quán)限的,所以應(yīng)注意“用戶名”是當(dāng)前登錄用戶的進(jìn)程,一旦發(fā)現(xiàn)是病毒,可以立即“殺掉”。這里介紹兩個技巧:1.發(fā)現(xiàn)可疑進(jìn)程后,利用Windows的查找功能,查找該進(jìn)程所在的具體路徑,通過路徑可以知道該進(jìn)程是否合法,譬如由路徑“C:Program Files3721assistse.exe”知道該程序是3721的進(jìn)程,是合法的。2.在對進(jìn)程是否病毒拿不定主意時,可以復(fù)制該進(jìn)程的全名,如:“xxx.exe”到googl點(diǎn)抗 或baidu點(diǎn)抗 這樣的全球搜查引擎上進(jìn)行搜查,如果是病毒會有相關(guān)的介紹網(wǎng)頁。確定了該進(jìn)程是病毒,首先應(yīng)該殺掉該進(jìn)程,對于Windows 9x系統(tǒng),選中該進(jìn)程后,點(diǎn)擊下面的“結(jié)束任務(wù)”按鈕,Windows2000、Windows XP、Windows 2003系統(tǒng)則在進(jìn)程上單擊右鍵在彈出菜單上選擇“結(jié)束任務(wù)”。“殺掉”進(jìn)程后找到該進(jìn)程的路徑刪除掉即可,完成后最好在進(jìn)行一次殺毒,這樣就萬無一失了。在win.ini文件中,在[Windows]下面,“run=”和“l(fā)oad=”是可能加載“木馬”程序的途徑,必須仔細(xì)留心它們。一般情況下,它們的等號后面什幺都沒有,如果發(fā)現(xiàn)后面跟有路徑與文件名不是你熟悉的啟動文件,你的計算機(jī)就可能中上“木馬”了。當(dāng)然你也得看清楚,因?yàn)楹枚唷澳抉R”,如“AOL Trojan木馬”,它把自身偽裝成command.exe文件,如果不注意可能不會發(fā)現(xiàn)它不是真正的系統(tǒng)啟動文件。在system.ini文件中,在[BOOT]下面有個“shell=文件名”。正確的文件名應(yīng)該是“explorer.exe”,如果不是“explorer.exe”,而是“shell= explorer.exe 程序名”,那幺后面跟著的那個程序就是“木馬”程序,就是說你已經(jīng)中“木馬”了。在注冊表中的情況最復(fù)雜,通過regedit命令打開注冊表編輯器,在點(diǎn)擊至:“HKEY-LOCAL-MACHINESoftwareMicrosoftWindowsCurrentVersionRun”目錄下,查看鍵值中有沒有自己不熟悉的自動啟動文件,擴(kuò)展名為EXE。這里切記:有的“木馬”程序生成的文件很像系統(tǒng)自身文件,想通過偽裝蒙混過關(guān),如“Acid Batteryv1.0木馬”,它將注冊表“HKEY-LOCAL-MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun”下的Explorer 鍵值改為Explorer=“C:Windowsexpiorer.exe”,“木馬”程序與真正的Explorer之間只有“i”與“l(fā)”的差別。當(dāng)然在注冊表中還有很多地方都可以隱藏“木馬”程序,如:“HKEY-CURRENT-USERSoftwareMicrosoftWindowsCurrentVersionRun”、“HKEY-USERS****SoftwareMicrosoftWindowsCurrentVersionRun”的目錄下都有可能,最好的辦法就是在“HKEY-LOCAL-MACHINESoftwareMicrosoftWindowsCurrentVersionRun”下找到“木馬該病毒也稱為“Code Red II(紅色代碼2)”病毒,與早先在西方英文系統(tǒng)下流行“紅色代碼”病毒有點(diǎn)相反,在國際上被稱為VirtualRoot(虛擬目錄)病毒。該蠕蟲病毒利用Microsoft已知的溢出漏洞,通過80端口來傳播到其它的Web頁服務(wù)器上。受感染的機(jī)器可由黑客們通過Http Get的請求運(yùn)行scripts/root.exe來獲得對受感染機(jī)器的完全控制權(quán)。當(dāng)感染一臺服務(wù)器成功了以后,如果受感染的機(jī)器是中文的系統(tǒng)后,該程序會休眠2天,別的機(jī)器休眠1天。當(dāng)休眠的時間到了以后,該蠕蟲程序會使得機(jī)器重新啟動。該蠕蟲也會檢查機(jī)器的月份是否是10月或者年份是否是2002年,如果是,受感染的服務(wù)器也會重新啟動。當(dāng)Windows NT系統(tǒng)啟動時,NT系統(tǒng)會自動搜索C盤根目錄下的文件explorer.exe,受該網(wǎng)絡(luò)蠕蟲程序感染的服務(wù)器上的文件explorer.exe也就是該網(wǎng)絡(luò)蠕蟲程序本身。該文件的大小是8192字節(jié),VirtualRoot網(wǎng)絡(luò)蠕蟲程序就是通過該程序來執(zhí)行的。同時,VirtualRoot網(wǎng)絡(luò)蠕蟲程序還將cmd.exe的文件從Windows NT的system目錄拷貝到別的目錄,給黑客的入侵敞開了大門。它還會修改系統(tǒng)的注冊表項(xiàng)目,通過該注冊表項(xiàng)目的修改,該蠕蟲程序可以建立虛擬的目錄C或者D,病毒名由此而來。值得一提的是,該網(wǎng)絡(luò)蠕蟲程序除了文件explorer.exe外,其余的操作不是基于文件的,而是直接在內(nèi)存中來進(jìn)行感染、傳播的,這就給捕捉帶來了較大難度。程序的文件名,再在整個注冊表中搜索即可。我們先看看微軟是怎樣描述svchost.exe的。在微軟知識庫314056中對svchost.exe有如下描述:svchost.exe 是從動態(tài)鏈接庫 (DLL) 中運(yùn)行的服務(wù)的通用主機(jī)進(jìn)程名稱。其實(shí)svchost.exe是Windows XP系統(tǒng)的一個核心進(jìn)程。svchost.exe不單單只出現(xiàn)在Windows XP中,在使用NT內(nèi)核的Windows系統(tǒng)中都會有svchost.exe的存在。一般在Windows 2000中svchost.exe進(jìn)程的數(shù)目為2個,而在Windows XP中svchost.exe進(jìn)程的數(shù)目就上升到了4個及4個以上。所以看到系統(tǒng)的進(jìn)程列表中有幾個svchost.exe不用那幺擔(dān)心。svchost.exe到底是做什么用的呢?首先我們要了解一點(diǎn)那就是Windows系統(tǒng)的中的進(jìn)程分為:獨(dú)立進(jìn)程和共享進(jìn)程這兩種。由于Windows系統(tǒng)中的服務(wù)越來越多,為了節(jié)約有限的系統(tǒng)資源微軟把很多的系統(tǒng)服務(wù)做成了共享模式。那svchost.exe在這中間是擔(dān)任怎樣一個角色呢?svchost.exe的工作就是作為這些服務(wù)的宿主,即由svchost.exe來啟動這些服務(wù)。svchost.exe只是負(fù)責(zé)為這些服務(wù)提供啟動的條件,其自身并不能實(shí)現(xiàn)任何服務(wù)的功能,也不能為用戶提供任何服務(wù)。svchost.exe通過為這些系統(tǒng)服務(wù)調(diào)用動態(tài)鏈接庫(DLL)的方式來啟動系統(tǒng)服務(wù)。svchost.exe是病毒這種說法是如何產(chǎn)生的呢?因?yàn)閟vchost.exe可以作為服務(wù)的宿主來啟動服務(wù),所以病毒、木馬的編寫者也挖空心思的要利用svchost.exe的這個特性來迷惑用戶達(dá)到入侵、破壞計算機(jī)的目的。如何才能辨別哪些是正常的svchost.exe進(jìn)程,而哪些是病毒進(jìn)程呢?svchost.exe的鍵值是在“HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsNTCurrentVersionSvchost”,每個鍵值表示一個獨(dú)立的svchost.exe組。微軟還為我們提供了一種察看系統(tǒng)正在運(yùn)行在svchost.exe列表中的服務(wù)的方法。以Windows XP為例:在“運(yùn)行”中輸入:cmd,然后在命令行模式中輸入:tasklist/svc。系統(tǒng)列出如圖2所示的服務(wù)列表。圖2中紅框包圍起來的區(qū)域就是svchost.exe啟動的服務(wù)列表。如果使用的是Windows 2000系統(tǒng)則把前面的“tasklist /svc”命令替換為:“tlist -s”即可。如果你懷疑計算機(jī)有可能被病毒感染,svchost.exe的服務(wù)出現(xiàn)異常的話通過搜索svchost.exe文件就可以發(fā)現(xiàn)異常情況。一般只會找到一個在:“C:WindowsSystem32”目錄下的svchost.exe程序。如果你在其它目錄下發(fā)現(xiàn)svchost.exe程序的話,那很可能就是中毒了。還有一種確認(rèn)svchost.exe是否中毒的方法是在任務(wù)管理器中察看進(jìn)程的執(zhí)行路徑。但是由于在Windows系統(tǒng)自帶的任務(wù)管理器不能察看進(jìn)程路徑,所以要使用第三方的進(jìn)程察看工具。上面簡單的介紹了svchost.exe進(jìn)程的相關(guān)情況??偠灾瑂vchost.exe是一個系統(tǒng)的核心進(jìn)程,并不是病毒進(jìn)程。但由于svchost.exe進(jìn)程的特殊性,所以病毒也會千方百計的入侵svchost.exe。通過察看svchost.exe進(jìn)程的執(zhí)行路徑可以確認(rèn)是否中毒。Services.exe造成CPU使用率占用100%癥狀在基于 Windows 2000 的計算機(jī)上,Services.exe中的 CPU 使用率可能間歇性地達(dá)到100 %,并且計算機(jī)可能停止響應(yīng)(掛起)。出現(xiàn)此問題時,連接到該計算機(jī)(如果它是文件服務(wù)器或域控制器)的用戶會被斷開連接。您可能還需要重新啟動計算機(jī)。如果 Esent.dll 錯誤地處理將文件刷新到磁盤的方式,則會出現(xiàn)此癥狀。解決方案Microsoft 提供了受支持的修補(bǔ)程序,但該程序只是為了解決本文所介紹的問題。只有計算機(jī)遇到本文提到的特定問題時才可應(yīng)用此修補(bǔ)程序。此修補(bǔ)程序可能還會接受其它一些測試。因此,如果這個問題沒有對您造成嚴(yán)重的影響,Microsoft 建議您等待包含此修補(bǔ)程序的下一個 Windows 2000Service Pack。要立即解決此問題,請與“Microsoft 產(chǎn)品支持服務(wù)”聯(lián)系,以獲取此修補(bǔ)程序。有關(guān)“Microsoft 產(chǎn)品支持服務(wù)”電話號碼和支持費(fèi)用信息的完整列表,請訪問 Microsoft Web 站點(diǎn):注意 :特殊情況下,如果 Microsoft 支持專業(yè)人員確定某個特定的更新程序能夠解決您的問題,可免收通常情況下收取的電話支持服務(wù)費(fèi)用。對于特定更新程序無法解決的其它支持問題和事項(xiàng),將正常收取支持費(fèi)用。下表列出了此修補(bǔ)程序的全球版本的文件屬性(或更新的屬性)。這些文件的曰期和時間按協(xié)調(diào)通用時間 (UTC) 列出。查看文件信息時,它將轉(zhuǎn)換為本地時間。要了解 UTC 與本地時間之間的時差,請使用“控制面板”中的“曰期和時間”工具中的時區(qū) 選項(xiàng)卡。狀態(tài)Microsoft 已經(jīng)確認(rèn)這是在本文開頭列出的Microsoft 產(chǎn)品中存在的問題。此問題最初是在 Microsoft Windows 2000Service Pack 4 中更正的。explorer.exe進(jìn)程造成CPU使用率占用100%在system.ini文件中,在[BOOT]下面有個“shell=文件名”。正確的文件名應(yīng)該是“explorer.exe”,如果不是“explorer.exe”,而是“shell= explorer.exe 程序名”,那幺后面跟著的那個程序就是“木馬”程序,就是說你已經(jīng)中“木馬”了。在注冊表中的情況最復(fù)雜,通過regedit命令打開注冊表編輯器,在點(diǎn)擊至:“HKEY-LOCAL-MACHINESoftwareMicrosoftWindowsCurrentVersionRun”目錄下,查看鍵值中有沒有自己不熟悉的自動啟動文件,擴(kuò)展名為EXE,這里切記:有的“木馬”程序生成的文件很像系統(tǒng)自身文件,想通過偽裝蒙混過關(guān),如“Acid Batteryv1.0木馬”,它將注冊表“HKEY-LOCAL-MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun”下的Explorer 鍵值改為Explorer=“C:Windowsexpiorer.exe”,“木馬”程序與真正的Explorer之間只有“i”與“l(fā)”的差別。當(dāng)然在注冊表中還有很多地方都可以隱藏“木馬”程序,如:“HKEY-CURRENT-USERSoftwareMicrosoftWindowsCurrentVersionRun”、“HKEY-USERS****SoftwareMicrosoftWindowsCurrentVersionRun”的目錄下都有可能,最好的辦法就是在“HKEY-LOCAL-MACHINESoftwareMicrosoftWindowsCurrentVersionRun”下找到“木馬”程序的文件名,再在整個注冊表中搜索即可。超線程導(dǎo)致CPU使用率占用100% 這類故障的共同原因就是都使用了具有超線程功能的P4 CPU。我查找了一些資料都沒有明確的原因解釋。據(jù)一些網(wǎng)友總結(jié)超線程似乎和天網(wǎng)防火墻有沖突,可以通過卸載天網(wǎng)并安裝其它防火墻解決,也可以通過在BIOS中關(guān)閉超線程功能解決。AVI視頻文件造成CPU使用率占用100%在Windows XP中,單擊一個較大的AVI視頻文件后,可能會出現(xiàn)系統(tǒng)假死現(xiàn)象,并且造成exploere.exe進(jìn)程的使用率100%,這是因?yàn)橄到y(tǒng)要先掃描該文件,并檢查文件所有部分,建立索引。如果文件較大就會需要較長時間并造成CPU占用率100%。解決方法:右鍵單擊保存視頻文件的文件夾,選擇”屬性—常規(guī)—高級“,去掉”為了快速搜索,允許索引服務(wù)編制該文件夾的索引“前面復(fù)選框的對鉤即可。處理較大的Word文件時CPU使用率過高上述問題一般還會造成電腦假死,這些都是因?yàn)閃ORD的拼寫和語法檢查造成的,只要打開WORD的“工具—選項(xiàng)”,進(jìn)入“拼寫和語法”選項(xiàng)卡,將其中的“鍵入時檢查拼寫”和“鍵入時檢查語法”兩項(xiàng)前面的復(fù)選框中的鉤去掉即可。正常軟件造成CPU使用率占用100%首先,如果是從開機(jī)后就發(fā)生上述情況直到關(guān)機(jī)。那幺就有可能是由某個隨系統(tǒng)同時登陸的軟件造成的??梢酝ㄟ^運(yùn)行輸入“msconfig”打開“系統(tǒng)實(shí)用配置工具”,進(jìn)入“啟動”選項(xiàng)卡。接著,依次取消可疑選項(xiàng)前面的對鉤,然后重新啟動電腦。反復(fù)測試直到找到造成故障的軟件。或者可以通過一些優(yōu)化軟件如“優(yōu)化大師”達(dá)到上述目的。另:如果鍵盤內(nèi)按鍵卡住也可能造成開機(jī)就出現(xiàn)上述問題。
更多最新硬件資訊請訪問:中關(guān)村在線-首頁
更多的最新CPU產(chǎn)品信息請訪問:中關(guān)村在線-CPU專區(qū)
更多硬件技術(shù)支持請訪問:中關(guān)村在線-硬件論壇希望以上信息對你的問題有所幫助。