問題原因
當您發現云主機的運行速度變慢或云主機突然出現網絡斷開的現象,則可能是由以下原因導致的。
- 云主機使用共享資源型實例:共享資源型實例在云計算中是指多個虛擬機共享同一臺物理服務器的資源,這會導致資源爭用,可能導致服務器卡頓問題。
- 云主機受到惡意軟件或病毒感染:惡意軟件可能執行各種惡意任務,占用大量計算資源,增加云主機網絡帶寬和資源消耗,影響正常的服務運行等,可能導致服務器卡頓問題。
- 云主機系統資源利用率異常:資源包括CPU、內存、磁盤和網絡等,當其中一個或多個資源受到過度使用或不合理分配時,可能導致服務器卡頓問題。
問題處理
云主機使用資源共享型實例
步驟一:問題定位
檢查當前云主機的規格類型,共享資源型和獨享資源型實例的說明請參見規格類型。
步驟二:問題處理
獨享資源型實例在云計算中獨享物理服務器的資源,可以提供更穩定和可預測的性能。如果您對業務穩定性有較高要求,建議您將共享型資源型實例變更為獨享資源型實例,請參見變更規格。
云主機受到惡意軟件或病毒的感染
步驟一:問題定位
定位云主機是否受到惡意軟件感染,您可以運行受信任的殺毒軟件或安全掃描工具,對服務器進行全面掃描。此外,您還可以檢查操作系統、應用程序和安全軟件是否為最新版本,并已應用最新的安全更新和補丁。
步驟二:問題處理
如果服務器受到惡意軟件感染,及時采取行動非常重要。隔離服務器、運行安全掃描工具、清除惡意軟件、更新系統等都是確保服務器安全的關鍵步驟。
云主機系統資源利用率異常
步驟一:問題定位
定位云主機中CPU利用率高、帶寬流量大、內存使用量高的進程。查看網絡問題時,您可以檢查網線、路由器等硬件設備是否正常工作,之后使用命令行工具ping命令來測試與其他計算機的網絡連接,檢查延遲和丟包情況。
步驟二:問題定位步驟
本部分詳細介紹了問題定位步驟,您可按照如下流程進行排查。以CentOS 7 64位操作系統為例,其他版本的操作命令請查閱相應操作系統的官方文檔。
本文以CentOS 7 64位操作系統為例,其他版本的操作命令請查閱相應操作系統的官方文檔。
CPU占用率高
使用top、htop和sar來監控系統的資源利用率是診斷服務器性能問題的常用方法。其中,top用于實時監控系統的進程和資源利用率,可以查看CPU使用率、內存使用率、運行中的進程列表、負載情況等;htop是top的增強版本,提供更多的交互式功能和更友好的界面;sar是系統性能分析工具,用于監控和報告系統資源利用率的歷史數據。
本文以top命令為例,診斷服務器性能問題。
-
執行top命令查看當前系統的運行狀態。

-
分析回顯結果。
● 命令回顯第一行:17:39:20 up 7 min, 2 users, load average: 0.22, 0.57, 0.37表示系統當前時間為17:39:20,該服務器已運行7分鐘,當前共有2個用戶登錄,最近1分鐘、最近5分鐘和最近15分鐘的CPU平均負載分別為0.22,0.57和0.37。
● 命令回顯第二行:任務總體情況,Tasks下的總數(total)、運行中(running)、休眠中(sleeping)、已停止(stopped)、僵尸進程(zombie)表示不同狀態下的進程數量。
● 命令回顯第三行:CPU資源總體使用情況,%Cpu(s) 下的用戶(us)、系統(sy)、等待(wa)和空閑(id)等表示不同類型的CPU使用情況。
● 命令回顯第四行:內存資源總體使用情況,KiB Mem下的總內存(total)、使用內存(used)、空閑內存(free)和緩沖區/緩存(buff/cache)表示不同的內存使用情況。
● 命令回顯最下方:進程列表描述了各進程的資源占用情況,顯示了系統中運行的進程,包括進程ID(PID)、CPU利用率、內存利用率、進程狀態等。
● 按下小寫“q”鍵退出top命令。
-
通過“ll /proc/PID/exe”命令查看每個進程ID對應的程序文件,判斷該進程為正常程序或異常程序。

-
按下大寫“P”鍵以CPU占用率大小的順序排列進程列表,找到占用CPU資源最多的進程,記錄其進程ID和進程名稱。使用工具strace、perf等進行進程的性能分析,找出造成高CPU 使用率的具體原因。
-
如果是您自己的應用程序占用CPU較高,可以分析和優化代碼,減少CPU使用,比如優化算法、減少循環次數、緩存數據等。
-
如果是系統資源不足引起CPU占用較高,您可以考慮升級硬件服務器,比如增加CPU核數或內存,請參見變更實例的CPU和內存規格。
CPU使用率高
-
如果是異常程序導致CPU使用率高,可以直接通過top命令終止進程。
● 在top命令運行同時,按下小寫“k”鍵,輸入要終止進程的PID后回車。例如,本文要終止PID為2的進程。
● 終止進程成功后,會顯示如下類似的信息,按回車確認。

-
kswapd0是Linux內核中的后臺進程,是內核內存管理子系統中的一部分,負責處理內存交換操作。它的主要目的是將不經常使用的內存頁面交換到磁盤空間,以釋放物理內存供其他進程使用。使用top命令查看kswapd0進程的資源使用情況。
● 如果kswapd0處于睡眠狀態,這表示系統當前的內存使用情況相對較好。
● 如果kswapd0處于激活狀態(不處于睡眠狀態),且運行時間較長,這可能暗示系統內存不足,初步判斷正在進行持續換頁操作,您可以增加內存進行系統規格的升級,或者對應用程序進行優化。
-
使用vmstat命令進一步查看系統虛擬內存的使用情況,如果si和so的值較低,說明系統內存和交換空間的平衡狀態良好;如果si和so的值較高,說明系統正在進行頻繁換頁操作,您可以增加內存進行系統規格的升級,或者對應用程序進行優化。

-
當內存不足時,您可以關閉或減少大量內存的應用程序或進程,或者使用free、ps等命令進一步查詢系統及系統進程的內存占用情況,再做進一步排查分析。
-
您可通過在業務空閑期重啟應用或者系統來釋放內存,或者優化應用程序、配置大頁內存來暫時緩解CPU使用率高的情況。如果要從根本上解決內存不足問題,建議您對服務器內存進行擴容。
帶寬使用率高
-
如果是正常業務訪問和正常應用程序導致帶寬使用率高,您可以升級服務器的帶寬進行解決。
-
如果是異常應用程序導致帶寬使用率高,您可以通過流量監控工具nethogs來實時監測統計各進程的帶寬使用情況,進一步定位異常進程。
● 使用命令yum install nethogs -y安裝nethogs工具,安裝完成后可以查看網絡帶寬的使用情況。執行命令時指定參數:-d設置刷新的時間間隔,默認為1s;-t開啟跟蹤模式;-c設置更新次數;device設置要檢測的網卡,默認是eth0。
● 例如:使用nethogs eth1查看eth1網卡上每個進程的網絡帶寬使用情況。回顯參數說明:PID表示進程ID;USER表示運行該程序的用戶;PROGRAM表示進程或連接雙方的IP地址和端口,第一個是服務器IP和端口,第二個是客戶端IP和端口;DEV表示流量要去往的網絡端口;SENT表示進程每秒發送的數據量;RECEIVED表示進程每秒接收的數據量。
-
如果是惡意應用程序導致帶寬使用率高,您可以使用kill PID命令終止惡意進程。
-
如果是非正常業務訪問導致帶寬使用率高,比如某個IP惡意訪問、遭受DDoS攻擊或CC攻擊,您可以采取以下措施。
● 使用iptables服務對指定IP地址進行處理,比如屏蔽IP地址或限速。
● 查看Anti-DDoS攻擊是否開啟,并檢查防護策略是否配置合適,請參考開啟Anti-DDoS防護。
● 查看CC防護策略是否開啟,并檢查防護策略是否配置合適,請參考CC防護。
步驟三:問題處理
- 正常程序:優化程序,或變更云主機配置,請參見實例配置變更。
- 異常程序:確保異常程序不會影響到系統組件或其他用戶,您可以手動關閉進程或隔離異常程序。根據異常原因,您還可以采用適當的措施來修復問題,比如:更新程序代碼、修復配置、應用補丁等。