當前位置:首頁 » 操作系統 » linuxcpu線程佔用

linuxcpu線程佔用

發布時間: 2023-09-19 08:28:02

『壹』 linux下一個線程佔用多少內存

Linux中線程本身是有自己的棧的,這個空間默認是10240,單位是K,所以默認佔用10M的內存,但是這是最少的,如果線程中,程序員也是用了內存,那就是大於10M,所以線程最低佔用的內存通過ulimit -s查看。

『貳』 linux 多線程cpu運行時間

這個月時間比較長的,因為這個度現成的CPU使用起來非常的好

『叄』 CPU佔用過高問題的排查及解決

top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況,類似於Windows的任務管理器

第一行,任務隊列信息,同uptime 命令的執行結果

第二行,Tasks — 任務(進程)

總進程:150 total, 運行:1 running, 休眠:149 sleeping, 停止: 0 stopped, 僵屍進程: 0 zombie

第三行,cpu狀態信息

第四行,內存狀態

1003020k total, 234464k used, 777824k free, 24084k buffers【緩存的內存量】

第五行,swap交換分區信息

2031612k total, 536k used, 2031076k free, 505864k cached【緩沖的交換區總量】

更多Linux內核視頻資料免費·領取後台私信【 內核 】自行獲取。

第六行,空行

第七行以下:各進程(任務)的狀態監控

詳解

top使用方法:

此時發現如果是Java的進程佔用過高,並且一直下不來,則排查是什麼線程導致佔比過高。以圖中進程舉例,假如發現PID為31357的Java進程佔CPU比一直很高,則記錄下它的PID

2.查看Java進程裡面的線程的佔用情況

top -H -p 31357 然後按shift+p按照CPU排序

說明:-H 指顯示線程,-p 是指定進程

可以看到CPU佔用較高的線程,記下他們的PID,假設這里31357的CPU佔比一直是50%

將查找到的 線程佔用最高的 tid 上圖中 29108 轉成16進制 --- 71b4

jstack 31357 > jstack.31357.log

以上能看到指定線程的堆棧信息。如果想看到關於線程中的 鎖的附加信息 ,可以加一個-l參數

4.上面方法用於進程正常情況下的堆棧列印

用jstack -l命令沒有響應,估計是CPU一直站著不能執行正常的命令,根據提示[The -F option can be used when the target process is not responding]只能放大招了。

jstack -F 「PID」 > jstack.「PID」.txt

吐出的實際日誌結果如下:

發現一大坨線程阻塞了,有用的結果在這里:

顯然一直在跑的是19576這個線程,一直在執行EXCEL導出的相關方法,問題就出在這里,下面的任務就是排查這個地方的代碼邏輯了。

jstack命令格式:

jstack [ option ] pid

參數說明:

命令格式

jps [ options ] [ hostid ]


參數說明:

三個參數加在一起顯示更詳細的信息:

發現這些Java進程的啟動參數中開放了JMX的遠程埠,正常情況下可以通過jconsole遠程連接過去看到JVM的日常參數。比如本地訪問上圖中的pay.war進程:

『肆』 Linux裡面cpu佔用太高排查思路是什麼

思路就是top查看是什麼進程佔用高,一般是應用或者資料庫,應用方面可以看看運行吐出日誌是否有報錯信息,查netstat連接應用埠的會話是不是有異常,資料庫進程高,可以使用自帶的檢查命令後台看是否有執行很久的sql事務,鎖等待頻繁,報錯日誌等,找到問題針對性的優化,一步一步解決。

『伍』 linux cpu使用率過高排查

方法一

第一步:使用

top命令,然後按shift+p按照CPU排序

找到佔用CPU過高的進程的pid

第二步:使用

top -H -p [進程id]

找到進程中消耗資源最高的線程的id

第三步:使用

echo 'obase=16;[線程id]' | bc或者printf "%x " [線程id]

將線程id轉換為16進制(字母要小寫)

bc是linux的計算器命令

第四步:執行

jstack [進程id] |grep -A 10 [線程id的16進制]」

查看線程狀態信息

方法二

第一步:使用

top命令,然後按shift+p按照CPU排序

找到佔用CPU過高的進程

第二步:使用

ps -mp pid -o THREAD,tid,time | sort -rn

獲取線程信息,並找到佔用CPU高的線程

第三步:使用

echo 'obase=16;[線程id]' | bc或者printf "%x " [線程id]

將需要的線程ID轉換為16進制格式

第四步:使用

jstack pid |grep tid -A 30 [線程id的16進制]

列印線程的堆棧信息

案例分析

場景描述

生產環境下JAVA進程高CPU佔用故障排查

解決過程

1、根據top命令,發現PID為2633的Java進程佔用CPU高達300%,出現故障。

2、找到該進程後,如何定位具體線程或代碼呢,首先顯示線程列表,並按照CPU佔用高的線程排序:

1

[root@localhost ~]# ps -mp 2633 -o THREAD,tid,time | sort -rn

顯示結果如下:

化主動為被動的方式,一方面減輕了運維工程師的工作,另一方面也減小了運維漏看或者忽略告警的情況發生。

『陸』 linux查看線程佔用cpu

top命令是最方便的,想看CPU列的話直接按字母 c 就會以cpu的使用高低來排列。 其實就每一列的第一個字母,如果想按cpu排列就按c ,按內存排列就按m。 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND top [-] [d delay] [q] [c] [s] [S] [i] d 指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之。 q 該選項將使top沒有任何延遲的進行刷新。如果調用程序有超級用戶許可權,那麼top將以盡可能高的優先順序運行。 S 指定累計模式。 s 使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。 i 使top不顯示任何閑置或者僵死進程。 c 顯示整個命令行而不只是顯示命令名但是無法顯示每個線程的 cpu 利用率情況, 這時就可能出現這種情況,總的 cpu 利用率中 user 或 system 很高,但是用進程的 cpu 佔用率進行排序時,沒有進程的 user 或 system 與之對應。 可以用下面的命令將 cpu 佔用率高的線程找出來: 這個命令首先指定參數'H',顯示線程相關的信息,格式輸出中包含:user,pid,ppid,tid,time,%cpu,cmd,然後再用%cpu欄位進行排序。這樣就可以找到佔用處理器的線程了。

『柒』 linux如何查看進程中各個線程的資源佔用情況

直接打開資源管理器,再進積欄目中就可以看到各個線程的資源佔用情況

熱點內容
ios6G與安卓12G哪個更快 發布:2025-01-24 11:26:22 瀏覽:827
下線源碼 發布:2025-01-24 11:26:22 瀏覽:523
windows8解壓軟體 發布:2025-01-24 11:04:41 瀏覽:559
藍牙聊天源碼 發布:2025-01-24 11:03:13 瀏覽:124
安卓是什麼意思是vivo嗎 發布:2025-01-24 11:01:32 瀏覽:486
懸賞網源碼 發布:2025-01-24 10:53:14 瀏覽:733
c語言時間變數 發布:2025-01-24 10:40:24 瀏覽:870
ppiandroid 發布:2025-01-24 10:25:50 瀏覽:1001
兒童壓縮機 發布:2025-01-24 10:25:09 瀏覽:75
蘋果的允許訪問在哪裡 發布:2025-01-24 10:24:32 瀏覽:32