⑴ linux cpu佔用較高
Linux伺服器上出現CPU負載達到100%居高不下的情況,如果CPU 持續跑高,則會影響業務系統的正常運行; CPU利用率。根據經驗來看,用戶空間進程佔用CPU比例在 65-70%。一般不能超過這個比例,超過這個比例,系統性能就會降低,平均負載升高,這點將會在下面的測試中看到。
進程上下文切換。上下文切換和CPU利用率應該聯系起來,如果CPU利用率低,那麼上下文切換稍高點也能接受。上下文切換也是需要消耗CPU資源的,頻繁的切換必將使得CPU利用率升高。
運行隊列中等待運行的進程數。每個CPU核心中等待處理的進程數不應該超過3個線程/進程。如4核心的機器,那麼隊列的最大值應該不超過12個。
對於CPU過載問題通常使用以下兩種方式即可快速定位(不能涵蓋所有特殊情況,請作為其中的參考排查思路):
一、排查分析
方法一(針對java應用):
第一步:使用
top命令,然後按shift+p按照CPU排序
找到佔用CPU過高的進程的pid
第二步:使用
top -H -p [進程id]
找到進程中消耗資源最高的線程的id
第三步:使用
echo 'obase=16;[線程id]' | bc或者printf "%x\n" [線程id]
將線程id轉換為16進制(字母要小寫)
bc是linux的計算器命令
第四步(此步驟可以和相對應的java開發進行一起排查):執行
jstack [進程id] |grep -A 10 [線程id的16進制]」
查看線程狀態信息
二、kswapd0 進程佔用 CPU 較高
操作系統都用分頁機制來管理物理內存,操作系統將磁碟的一部分劃出來作為虛擬內存,由於內存的速度要比磁碟快得多,所以操作系統要按照某種換頁機制將不需要的頁面換到磁碟中,將需要的頁面調到內存中,由於內存持續不足,這個換頁動作持續進行,kswapd0 是虛擬內存管理中負責換頁的,當伺服器內存不足的時候 kswapd0 會執行換頁操作,這個換頁操作是十分消耗主機 CPU 資源的。如果通過 top 發現該進程持續處於非睡眠狀態,且運行時間較長,可以初步判定系統在持續的進行換頁操作,可以將問題轉向內存不足的原因來排查。
⑵ linux如何查詢cpu佔用率及服務名稱
linux查看cpu使用率的方法:首先確保linux環境能夠上網,並且配置好源;然後執行命令「apt-get install dstat」來進行軟體的安裝;最後執行命令「dstat -c」顯示系統整體的cpu情況即可。
在linux的系統維護中,可能需要經常查看cpu使用率,分析系統整體的運行情況。而監控CPU的性能一般包括以下3點:運行隊列、CPU使用率和上下文切換。那麼如何查看cpu使用率?下面本篇文章就來給大傢具體介紹一下,希望對大家有所幫助。【視頻教程推薦:linux教程】
1、使用top命令
這個命令很常用,在終端中直接執行top命令,即可在第三行看到cpu的使用率。
註:96.9id,表示空閑CPU,即CPU未使用率,100%-96.9%=3.1%,即系統的cpu使用率為3.1%。
如果有多個CPU,希望查詢每個CPU的使用率,可以在top命令的界面,按數字鍵1,即可看到其它CPU的使用率,如下圖:
2、使用vmstat命令
vmstat命令是最常見的Linux/Unix監控工具,可以展現給定時間間隔的伺服器的狀態值,包括伺服器的CPU使用率,內存使用,虛擬內存 交換情況,IO讀寫情況。
相比top命令,通過vmstat可以看到整個機器的 CPU,內存,IO的使用情況,而不是單單看到各個進程的CPU使用率和內存使用率。
句式:
1
vmstat -w-w
一般vmstat工具的使用是通過兩個數字參數來完成的,第一個參數是采樣的時間間隔數,單位是秒,第二個參數是采樣的次數。例:
說明:2表示每個兩秒採集一次伺服器狀態,1表示只採集一次。
3、使用dstat命令
dstat命令是一個用來替換vmstat、iostat、netstat、nfsstat和ifstat這些命令的工具,是一個全能系統信息統計工具。
如果沒有dstat命令,則需要進行下載安裝。
首先我們需要確保linux環境能夠上網,並且配置好源。在root賬戶登錄下。執行命令apt-get install dstat 。進行軟體的安裝。
然後執行命令dstat -c。顯示系統整體的cpu情況。
顯示各個信息為CPU用戶佔用,系統佔用,空閑,等待,中斷,軟體中斷等信息。