Linux雲服務器卡頓排查過程


Linux雲服務器卡頓怎么辦?

當您發現雲服務器的運行速度變慢或雲服務器突然出現網絡斷開現象,則可能是雲服務器的帶寬和CPU使用率過高導致。

Linux實例帶寬流量過高或CPU使用率高,您可以按如下步驟進行排查:

  1. 問題定位:定位影響雲服務器帶寬和CPU使用率高的進程。

  2. 問題處理:排查進程是否正常,並分類進行處理。

    • 正常進程:優化程序,或變更雲服務器的配置
    • 異常進程:建議您手動關閉進程,或者借助第三方工具關閉進程。

本文相關操作命令以CentOS 7.2 64位操作系統為例。其它版本的Linux操作系統命令可能有所差異,具體情況請參閱相應操作系統的官方文檔。

常用命令

Linux雲服務器查看CPU使用率等性能相關問題時的常用命令如下:

  • ps -aux
  • ps -ef
  • top

CPU占用率高問題定位

  1. 使用VNC功能登錄雲服務器。

  2. 執行如下命令查看當前系統的運行狀態。

    top

    系統回顯樣例如下:
    image

  3. 查看顯示結果。

    • 命令回顯第一行:20:56:02 up 37 days,1 user, load average: 0.00, 0.01, 0.05的每個字段含義如下:

      系統當前時間為20:56:02,該雲服務器已運行37天,當前共有1個用戶登錄, 最近1分鍾、最近5分鍾和最近15分鍾的CPU平均負載。

    • 命令回顯第三行:CPU資源總體使用情況。

    • 命令回顯第四行:內存資源總體使用情況。

    • 回顯最下方顯示各進程的資源占用情況。

      說明:

      1. 在top頁面,可以直接輸入小寫“q”或者在鍵盤上按“Ctrl+C”退出。

      2. 除了直接輸入命令,您還可以單擊VNC登錄頁面屏幕右上角的“Input Command”,在彈出的對話框中粘貼或者輸入相應命令,單擊“Send”。

      3. 在top運行中常用的內容命令如下:

        s:改變畫面更新頻率。

        l:關閉或開啟第一部分第一行top信息的表示。

        t:關閉或開啟第一部分第二行Tasks和第三行Cpus信息的表示。

        m:關閉或開啟第一部分第四行Mem和 第五行Swap信息的表示。

        N:以PID的大小的順序排列進程列表。

        P:以CPU占用率大小的順序排列進程列表。

        M:以內存占用率大小的順序排列進程列表。

        h:顯示命令幫助。

        n:設置在進程列表所顯示進程的數量。

  4. 通過ll /proc/PID/exe

    命令可以查看每個進程ID對應的程序文件。
    image

CPU使用率高問題處理

對於導致CPU使用率高的具體進程,如果確認是異常進程,可以直接通過top命令終止進程。對於kswapd0進程導致的CPU使用率高的問題,則需要對應用程序進行優化,或者通過增加內存進行系統規格的升級。

kswapd0是系統的虛擬內存管理程序,如果物理內存不夠用,系統就會喚醒kswapd0進程,由

kswapd0分配磁盤交換空間用作緩存,因而占用大量的CPU資源。

  • 使用top命令終止CPU占用率高的進程

    您可以直接在top運行界面快速終止相應的異常進程。操作步驟如下:

    1. 在top命令運行的同時,按下小寫的“k”鍵。

    2. 輸入要終止進程的PID。

      進程的PID為top命令回顯的第一列數值。例如,要終止PID為52的進程,直接輸入“52”后回車。
      image

    3. 操作成功后,會出現如下圖所示類似信息,按回車確認。
      image

  • kswapd0進程占用導致CPU使用率高

    可通過以下步驟排查進程的內存占用情況。

    1. 通過top命令查看kswapd0進程的資源使用。

    2. 如果kswapd0進程持續處於非睡眠狀態,且運行時間較長,可以初步判定系統在持續的進行換頁操作,可以將問題轉向內存不足的原因來排查。
      image

    3. 通過vmstat命令進一步查看系統虛擬內存的使用情況。

      • si:每秒從交換區寫到內存的大小,由磁盤調入內存。
      • so:每秒寫入交換區的內存大小,由內存調入磁盤。
    4. 對於內存不足問題,可以通過free、ps等命令進一步查詢系統及系統內進程的內存占用情況,做進一步排查分析。

    5. 臨時可通過在業務空閑期重啟應用或者系統釋放內存。

      如果要從根本上解決內存不足的問題,需要對服務器內存進行擴容,擴大內存空間。如果不具備擴容的條件,可通過優化應用程序,以及配置使用大頁內存來進行緩解。

帶寬使用率高問題分析

如果是正常業務訪問以及正常應用進程導致的帶寬使用率高,需要升級服務器的帶寬進行解決。如果是非正常訪問,如某些特定IP的惡意訪問,或者服務器遭受到了CC攻擊。或者異常進程導致的帶寬使用率高。可以通過流量監控工具nethogs來實時監測統計各進程的帶寬使用情況,並進行問題進程的定位。

  • 使用nethogs工具進行排查

    1. 執行以下命令,安裝nethogs工具。
     yum install nethogs -y

安裝成功后可以通過netgos命令查看網絡帶寬的使用情況。

nethogs命令常用參數說明如下:

     -d:設置刷新的時間間隔,默認為 1s。
     -t:開啟跟蹤模式。
     -c:設置更新次數。
     device:設置要監測的網卡,默認是eth0。

     運行時可以輸入以下參數完成相應的操作:

     - q:退出nethogs工具。
     - s:按發送流量大小的順序排列進程列表。
     - r:按接收流量大小的順序排列進程列表。
     - m:切換顯示計量單位,切換順序依次為KB/s、KB、B、MB。
  1. 執行以下命令,查看指定的網絡端口每個進程的網絡帶寬使用情況。
   nethogs eth1

image

     回顯參數說明如下:
	 
     - PID:進程 ID。
     - USER:運行該進程的用戶。
     - PROGRAM:進程或連接雙方的IP地址和端口,前面是服務器的IP和端口,后面是客戶端的IP和端口。
     - DEV:流量要去往的網絡端口。
     - SENT:進程每秒發送的數據量。
     - RECEIVED:進程每秒接收的數據量。
  1. 終止惡意程序或者屏蔽惡意訪問IP。

    如果確認大量占用網絡帶寬的進程是惡意進程,可以使用kill PID命令終止惡意進程。

    如果是某個IP惡意訪問,可以使用iptables服務來對指定IP地址進行處理,如屏蔽IP地址或限速。

  • 使用Web應用防火牆防御CC攻擊

    若服務遭受了CC攻擊,請在Web應用防火牆控制台開啟CC安全防護。Web應用防火牆的使用指導請參見web應用防火牆指導


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM