×

幫助中心

常見問題
域名類
?  域名介紹
?  注冊/續(xù)費
?  域名管理
?  域名過戶
?  域名轉移
?  增值服務
?  域名交易
?  通用網址
?  產品更新日志
郵局類
?  產品簡介
?  產品管理
?  郵件客戶端
?  郵箱用戶操作指南
?  郵箱管理員操作指南
?  產品使用手冊
?  代理商控制臺操作指南
?  產品更新日志
云虛機類
?  購買與升級
?  FTP
?  主機管理
?  技術問題
?  數據庫
?  產品更新日志
ECS云主機類
?  產品更新日志
會員類
?  會員注冊
?  信息修改
?  忘記密碼
?  賬戶實名認證
?  產品更新日志
財務類
?  后付費計費
?  在線支付
?  線下匯款
?  發(fā)票問題
?  匯款單招領
?  退款問題
?  充值業(yè)務
?  產品更新日志
ICP備案
?  備案問題快速咨詢通道
?  備案介紹
?  備案賬號
?  ICP備案前準備內容
?  ICP備案流程
?  ICP備案操作指導
?  ICP備案信息查看
?  備案合規(guī)核查要求
?  資料下載
?  公安聯網備案與經營性備案
?  各地管局備案通知
?  常見問題
服務類
?  ICP備案
?  小新服務
?  產品更新日志
網站定制類
?  網站定制問題
?  網站訪問問題
新辦公類
?  常見問題
?  操作手冊下載
云推送
?  云推送常見問題
速成建站
?  網站訪問問題
?  網站使用問題
?  產品更新日志
SSL證書
?  SSL證書常見問題
?  產品更新日志
新網云產品類
?  新網云WEB應用防火墻
?  新網云DDoS防護
?  云數據庫
?  云產品運維
?  內容分發(fā)網絡CDN
?  對象存儲 S3
?  網絡
資料下載
新手上路

Linux CPU 占用率高的解決方案

  • 作者:新網
  • 文章來源:新網
  • 點擊數:100
  • 更新時間:2017-07-26 09:49:23

   Linux CPU 占用率高的解決方案

 

  Linux 系統下,您可以按如下步驟進行排查:

 

  1、定位問題。找到影響帶寬和 CPU 跑滿或跑高的具體進程。

     2、分析處理。排查影響帶寬和 CPU 跑滿或跑高的進程是否正常,并分類進行處理

     3、對于 正常進程:您需要對程序進行優(yōu)化或者升級服務器配置。

  4、對于 異常進程:您可以手動對進程進行查殺,也可以使用第三方安全工具去查殺。

 

  如果云服務器 Linux 系統的 CPU 持續(xù)跑高,則會對系統穩(wěn)定性和業(yè)務運行造成影響。本文對 CPU 占用率較高問題的排查分析做簡要說明。

 

  CPU 跑滿或跑高的問題定位

 

  若云服務器的 CPU 持續(xù)跑高,會對系統的穩(wěn)定性和業(yè)務運行造成影響。Linux 系統下,查看進程的常用命令如下:

 

  ps -aux

  ps -ef

  top

 

  Linux 系統中,通常使用 top 命令來查看系統的負載問題,并定位耗用較多 CPU 資源的進程。

 

  說明:資源負載異常時,通常無法通過 SSH 進行遠程連接,建議您通過控制臺管理終端進行連接。

 

  通過 top 命令查看系統當前的運行情況。

 

  top - 17:27:13 up 27 days, 3:13, 1 user, load average: 0.02, 0.03, 0.05

  Tasks: 94 total, 1 running, 93 sleeping, 0 stopped, 0 zombie

  %Cpu(s): 0.3 us, 0.1 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.1 st

  KiB Mem: 1016656 total, 946628 used, 70028 free, 169536 buffers

  KiB Swap: 0 total, 0 used, 0 free. 448644 cached Mem

  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

  1 root 20 0 41412 3824 2308 S 0.0 0.4 0:19.01 systemd

  2 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kthreadd

 

  針對負載問題,您只需關注回顯的第一行和第三行信息,詳細說明如下。

 

  top 命令的第一行顯示的內容 17:27:13 up 27 days, 3:13, 1 user, load average: 0.02, 0.03, 0.05 依次為 系統當前時間 、系統到目前為止已運行的時間、當前登錄系統的用戶數量、系統負載,這與直接執(zhí)行 uptime 命令查詢結果一致。

 

  top 命令的第三行會顯示當前 CPU 資源的總體使用情況,下方會顯示各個進程的資源占用情況。

 

  通過字母鍵 P,可以對 CPU 使用率進行倒序排列,進而定位系統中占用 CPU 較高的進程。

 

  說明:通過字母鍵 M, 您可以對系統內存使用情況進行排序。如果有多核 CPU,數字鍵 1 可以顯示每核 CPU 的負載狀況。

 

  通過 ll /proc/PID/exe 可以查看每個進程 ID 對應的程序文件。

 

  CPU 跑滿或跑高的分析處理

 

  CPU 的跑滿或跑高,在確認具體的進程結果后,針對異常的進程,您需要通過 top 命令將其終止;而對于 kswapd0 進程導致的內存不足等問題,您需要對系統進行規(guī)格的升級或程序的優(yōu)化。

 

  使用 top 直接終止 CPU 消耗較大的進程

 

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

 

  若您想要終止某個進程,只需按下小寫的 k 鍵。

  輸入想要終止的進程 PID (top 輸出結果的第一列)。例如,若您想要終止 PID 為 86 的進程,輸入 86 后按回車即可。

  操作成功后,界面會出現類似 Send pid 86 signal [15/sigterm] 的提示信息。按回車確認即可。

 

  kswapd0 進程占用導致 CPU 較高

 

  操作系統都用分頁機制來管理物理內存,系統會把一部分硬盤空間虛擬成內存使用。由于內存的速度要比磁盤快得多,所以系統要按照某種換頁機制將不需要的頁面換到磁盤中,將需要的頁面調到內存中。

 

  kswapd0 是虛擬內存管理中負責換頁的進程,當服務器內存不足的時候 kswapd0 會執(zhí)行換頁操作,這個換頁操作是十分消耗主機 CPU 資源的。操作步驟如下:

 

  通過 top 命令查看 kswapd0 進程。

 

  檢查該進程是否持續(xù)處于非睡眠狀態(tài),且運行時間較長。若是,可以初步判定系統在持續(xù)地進行換頁操作,kswapd0 進程占用了系統大量 CPU 資源。

1.jpg

 

  您可以通過 free 、ps 等指令進一步查詢系統及系統內進程的內存占用情況,做進一步排查分析。

 

  針對系統當前內存不足的問題,您可以重啟 Apache,釋放內存。

 

  說明:從長遠的角度來看,您需要對內存進行升級。

 

  帶寬跑滿或跑高的分析處理

 

  對于正常進程導致的帶寬跑滿或跑高的問題,需要對服務器的帶寬進行升級。對于異常進程,有可能是由于惡意程序問題,或者是部分 IP 惡意訪問導致,也可能是服務遭到了 CC 攻擊。

  通常情況下,您可以使用 iftop 工具或 nethogs 查看流量的占用情況,進而定位到具體的進程。

 

  使用 iftop 工具排查

 

  在服務器內部安裝 iftop 流量監(jiān)控工具。

 

  yum install iftop -y

2.jpg

 

  服務器外網帶寬被占滿時,如果通過遠程無法登陸,可進入到服務器內部,運行下面命令查看流量占用情況:

 

  iftop -i eth1 -P

 

  注意:-P 參數將會顯示請求端口。執(zhí)行 iftop -i eth0 -P 命令,可以查看通過服務器哪個端口建立的連接,以及內網流量。舉例如下:

3.jpg

 

  在上圖中,您可以查看到流量高耗的是服務器上 53139 端口和 115.205.150.235 地址建立的連接。

 

  執(zhí)行 netstat 命令反查 53139 端口對應的進程。

 

  netstat -tunlp |grep 53139

4.jpg

 

  經反查,服務器上 vsftpd 服務產生大量流量,您可以通過停止服務或使用 iptables 服務來對指定地址進行處理,如屏蔽 IP 地址或限速,以保證服務器帶寬能夠正常使用。

 

  使用 nethogs 進行排查

 

  在服務器內部安裝 nethogs 流量監(jiān)控工具。

 

  yum install nethogs -y

 

  通過 nethogs 工具來查看網卡上進程級的流量信息,若未安裝可以通過 yum、apt-get 等方式安裝。舉例如下:

 

  若 eth1 網卡跑滿,執(zhí)行命令 nethogs eth1。

 

  查看每個進程的網絡帶寬情況以及進程對應的 PID。

 

  確定導致帶寬跑滿或跑高的具體進程。

5.jpg

 

  若進程確定是惡意程序,可以通過執(zhí)行 kill -TERM 來終止程序。

 

  說明: 如果是 Web 服務程序,您可以使用 iftop 等工具來查詢具體 IP 來源,然后分析 Web 訪問日志是否為正常流量。日志分析可以使用 logwatch 或 awstats 等工具進行。

 

主機管理

免費咨詢獲取折扣

Loading