把定時重啟服務器命令添加到定時任務裡,對減少服務器故障確有幫助,可只是掩蓋了問題而非最終解決,其代價是“抽 to death”--服務器死機甚至無法引導操作系統,這時就會比較慘,半夜也不得不趕去機房救火。如果趕上放假、旅游、回老家,更是苦不堪言,為此筆者甚至多次動過轉行的念頭!有個朋友推薦筆者使用硬件VNC來解決突發性,筆者通過一段時間的使用及經驗積累感覺運維壓力減輕不少,特在此介紹給各位運維同行以助早日脫離苦海。
談到VNC,運維人員大多十分熟悉,是一類老牌遠程桌面工具的通稱,其以支持多平台而著稱,已成為遠程桌面的事實標准,其中包括大名鼎鼎的RealVNC、TightVNC等等。所謂硬件VNC,是指它是集成了VNC服務端功能的硬件,它獨立於受控服務器安裝運行,不需要在受控服務器上安裝任何VNC服務端,只需要把硬件VNC連接到受控服務器上,然後就可以通過各種VNC客戶端連接受控服務器了。與各種軟件VNC相比,硬件VNC的最大好處是不依賴於服務器,通過硬件VNC可以遠程配置BIOS、查看藍屏錯誤、連接巨卡的服務器,甚至服務器死機了仍可連接。在這裡簡單介紹一下筆者利用硬件VNC解決Windows 2003服務器故障的三個實例,其中有筆者總結的一些小技巧,希望可以對各位運維同道有所幫助和啟發:
實例一、服務器CPU或內存占用過高,響應緩慢
解決思路:盡快找到占用CPU或者內容過高的異常進程並予以結束,無法結束時可以考慮重啟服務器。
具體操作:可以想象此時服務器響應已經非常緩慢,服務器上運行的VNC或者遠程桌面服務往往已經無法連接。此時應通過硬件VNC連接服務器,考慮到服務器響應速度慢導致難以操作,應減少鼠標操作,盡量通過快捷鍵完成操作。筆者總結的最快捷的操作順序是(1)通過Ctrl+Shift+ESC組合鍵調查任務管理器;(2)通過Shift+Tab鍵切換到“進程”頁;(3)找到導致服務器CPU和內存進程使用率占用異常的進程後,通過Alt+E鍵予以結束。按此流程,最少只需要2、3次按鍵就可以把異常進程K掉了,然後再查明引起異常的具體原因或者重啟相應進程即可。裡面還有一個小技巧,就是盡量通過TightVNC來連接硬件VNC,然後按下TightVNC裡面的“Ctrl工具項”再按下Shift+ESC鍵,這樣才能調出任務管理器,試一下你就明白了,不解釋。
如果無法找到問題進程,只能選擇重啟服務器以最快恢復故障,筆者使用的最快捷操作是:(1)TightVNC下按下“Windows旗幟按鍵”後點擊R鍵;(2)在運行對話框內輸入命令‘ shutdown -r -f -t 00’後按回車鍵,系統將立即進行重啟。
實例二、服務器中毒或受到攻擊導致網絡帶寬被占滿
解決思路:禁用網絡接口,查明具體原因後再重新啟用
具體操作:一般情況下(如服務器受到SYN FLOOD攻擊導致最大連接數占滿),硬件VNC的網絡連接未受波及,此時可以直接遠程控制受控主機,在“網上鄰居”圖標上點擊鼠標右鍵選擇“屬性”,此時會打開“網絡連接”窗口,選擇相應網絡連接後點擊鼠標右鍵選擇“禁用”即可。某些特殊情況下(如服務器中毒後大量向局域網發包),硬件VNC的網絡連接帶寬也受到一定影響,此時硬件VNC的遠程桌面畫面刷新也會比較緩慢,建議通過快捷鍵進行操作。筆者的做法是:(1)在TightVNC下按下“Windows旗幟按鍵”後點擊R鍵,鍵入“cmd+回車”,此時會調出Dos命令提示行窗口;(2)在Dos窗口中鍵入命令‘netsh interface set interface name="eth0" admin=DISABLED ’,即可禁用網絡名稱為eth0的網絡連接,命令中“eth0”部分需要替換成相應網絡連接名稱。建議在日常維護中做好相應准備,將“本地連接*”的中文網絡連接名稱更換為“eth*”樣式的英文簡寫,已備在關鍵時刻使用。另外,還可以通過命令‘netsh interface show interface’命令查看網絡連接名稱和當前狀態,通過命令‘netsh interface set interface name="eth0" admin=ENABLED ’,即可重新啟用網絡連接eth0。
實例三、服務器藍屏
解決思路:記錄藍屏信息,嘗試重啟服務器,如無法引導則進入安全模式
具體操作:藍屏情況下,硬件VNC可以看到屏幕的現實信息,有的時候這部分信息可以指出具體出錯的硬件驅動或者DLL程序是什麼,這類情況下可以通過VNC客戶端將屏幕拷貝下來,留作稍後分析使用(當然很多情況下Windows的藍屏提示信息也是沒有任何價值的)。然後我們可以聯系機房,幫我們進行重啟,一般來講,重啟可以恢復80%以上的故障。如果重啟後進入操作系統過程中再次藍屏,那我們只能跟機房來句“不好意思,麻煩您了,能再給重啟一次嗎…”,然後盯住VNC客戶端,一旦看到服務器開機畫面就開始狂按F8,選擇進入安全模式,然後再慢慢修復具體故障好了。順便提一個小經驗,憑此方式也可以確切知道機房網管是否給重啟了服務器,這點用途也不多解釋了,都懂的。
以上是筆者總結的一些解決服務器故障方面的一些小經驗與技巧,如果各位運維朋友有更優的解決方式、或者在實際運維工作中有任何疑問或困難,歡迎大家隨時與筆者聯系溝通,互相學習交流!