Linux系統下高CPU解決方案
產品升級後系統會變慢和CPU使用率相當高的時候,應該怎麼辦呢?以下本站小編整理的Linux系統下高CPU解決方案,希望對大家有所幫助,更多信息請關注HRef="https://bimogu.com/tags-gvx2-0.html" target="_blank" >應屆畢業生網!
1.用top命令查看哪個進程佔用CPU高
gateway網關進程14094佔用CPU高達891%,這個數值是進程內各個線程佔用CPU的累加值。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14094 root 15 0 315m 10m 7308 S 891% 2.2 1:49.01 gateway
20642 root 17 0 17784 4148 2220 S 0.5 0.8 2:39.96 microdasys
1679 root 18 0 10984 1856 1556 R 0.3 0.4 0:22.21 sshd
22563 root 18 0 2424 1060 800 R 0.3 0.2 0:00.03 top
1 root 18 0 2156 492 460 S 0.0 0.1 0:01.59 init
2.用top -H -p pid命令查看進程內各個線程佔用的CPU百分比
#top -H -p 14094
top中可以看到有107個線程,但是下面9個線程佔用CPU很高,下面以線程14086爲主,分析其爲何high CPU
PID USER PR NI VIRT RES SHR S %CPU MEM TIME+ COMMAND
14086root 25 0 922m 914m 538m R 101 10.0 21:35.46 gateway
14087 root 25 0 922m 914m 538m R 101 10.0 10:50.22 gateway
14081 root 25 0 922m 914m 538m S 99 10.0 8:57.36 gateway
14082 root 25 0 922m 914m 538m R 99 10.0 11:51.92 gateway
14089 root 25 0 922m 914m 538m R 99 10.0 21:21.77 gateway
14092 root 25 0 922m 914m 538m R 99 10.0 19:55.47 gateway
14094 root 25 0 922m 914m 538m R 99 10.0 21:02.21 gateway
14083 root 25 0 922m 914m 538m R 97 10.0 21:32.39 gateway
14088 root 25 0 922m 914m 538m R 97 10.0 11:23.12 gateway
3.使用gstack命令查看進程中各線程的函數調用棧
#gstack 14094 >
在中查找線程ID14086,由於函數棧會暴露函數細節,因此只顯示了兩個函數楨,線程ID14086對應線程號是37
Thread 37 (Thread 0x4696ab90 (LWP 14086)):
#0 0x40000410 in __kernel_vsyscall ()
#1 0x40241f33 in poll () from /lib/i686/nosegneg/.6
4.使用gcore命令轉存進程映像及內存上下文
#gcore 14094
該命令生成core文件core.14094
5.用strace命令查看系統調用和花費的時間
#strace -T -r -c -p 14094
-c參數顯示統計信息,去掉此參數可以查看每個系統調用話費的時間及返回值。
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------------------
99.99 22.683879 3385 6702 poll
0.00 0.001132 0 6702 gettimeofday
0.00 0.000127 1 208 208 accept
0.00 0.000022 22 1 read
0.00 0.000000 0 1 write
0.00 0.000000 0 1 close
0.00 0.000000 0 14 time
0.00 0.000000 0 2 stat64
0.00 0.000000 0 4 clock_gettime
0.00 0.000000 0 7 send
0.00 0.000000 0 10 10 recvfrom
------ ----------- ----------- --------- --------- ------------------------------
100.00 22.685160 13652 218 total
6.用gdb調試core文件,併線程切換到37號線程
gcore和實際的core dump時產生的'core文件幾乎一樣,只是不能用gdb進行某些動態調試
(gdb) gdb gateway core.14094 (gdb) thread 37 [Switching to thread 37 (Thread 0x4696ab90 (LWP 14086))]#0 0x40000410 in __kernel_vsyscall () (gdb) where #0 0x40000410 in __kernel_vsyscall () #1 0x40241f33 in poll () from /lib/i686/nosegneg/.6
可以根據詳細的函數棧進行gdb調試,打印一些變量值,並結合源代碼分析爲何會poll調用佔用很高的CPU。
因爲代碼涉及到公司產權,顧不在此做詳細分析,需要明白的是分析的流程和使用的命令。
流程爲:進程ID->線程ID->線程函數調用棧->函數耗時和調用統計->源代碼分析
相關文章
-
Linux下高cpu解決方案
由於電腦配置不高或工作需要較高的cpu等原因,cpu經常佔用很高,下面給大家介紹Linux下高cpu解決方案,一起來了解一下吧! Linux下高cpu解決方案 1.用top命令查看哪個進程佔用CPU高gateway網關進程14094佔用CPU高達891% -
Ubuntu Linux系統下設置Static IP的方法
做了個筆袋,一針一線,大家看看吧主要材料:植鞣革所需工具:直尺美工刀打孔器製作步驟:第1步:裁切牛皮,粘貼拉鍊第2步:沒有木夾,弄了兩塊花梨板做了個簡易的,縫線第3步:第4步:粘貼另一邊縫線第5步:第6步:壓邊,粘貼兩邊第7步:定位打斬第8 -
Linux cpuinfo系統詳解
Linux可安裝在各種計算機硬件設備中,比如手機、平板電腦、路由器、視頻遊戲控制檯、臺式計算機、大型機和超級計算機。下面是關於Linux cpuinfo系統詳解,希望大家認真閱讀!判斷依據:1.具有相同core id的cpu是同一個core -
Linux認證系統管理:linux下搭建ftp
最近爲了方便目標板與PC機上LINUX之間的通訊,就在LINUX搭建了FTP,工作不難,寫個總結。主要經過以下幾個步驟: 1.檢查是否安裝了vsftpd服務器可以用rpm -q vsftpd命令來查看,若顯示"vsftpd-1.1.3-8",則說明系統已經安裝vs -
Ubuntu Linux系統的分區方案示例
詳情可去某寶搜索商家“章魚小丸子手作”瞭解,那裏有更多萌萌噠小玩意等着你哦主要材料:棉布蕾絲所需工具:帶子 一條針線熨斗製作步驟:第1步:草圖😂😂第2步:耳朵~第3步:沒錢啊。。。😅😅😅第4步:如圖啦如圖啦第5步:第6步:第7 -
PHP腳本修改Linux或Unix系統口令方法
石榴作爲一種水果,在人們的日常生活中已不足爲奇。到了石榴盛產的季節,集市上穿梭的行人總會不留意間,將目光聚焦在這種圓圓的水果身上。因爲它的大而飽滿,也因爲它的果實晶瑩剔透,還因爲它的藏而不漏,或多或少,會讓人心生遐 -
關於PHP腳本修改Linux或Unix系統口令方法
PHP腳本修改Linux或Unix系統口令方法PHP獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。今天,小編爲大家搜索整理了PHP腳本修改Linux或Unix系統口令方法,希望大家能有所收 -
教你快速瞭解Linux系統下的proc目錄
快速瞭解Linux系統下的proc目錄/proc/devices文件這個文件列出字符和塊設備的主設備號,以及分配到這些設備號的設備名稱。常用的命令爲#cat /proc/devices(在調試驅動的時候這個還是有用的,可以通過lsmod查看驅動模塊是 -
Linux系統死機解決方法
Linux系統出現死機了咋辦?不要着急,下面yjbys小編爲大家分享linux出現死機的原因及解決方法!如果Linux系統出現死機,一般分爲兩種情況:一是硬件問題;二是軟件問題。 一、硬件問題可以考慮分析以下幾點:1、不要超頻CPU, -
Linux 系統故障排查和解決方法
淡黃色男生染髮髮型,有着極佳的非主流感覺的羽毛燙染髮設計,輕輕地前梳效果搭配中間秀髮的微妙定位燙設計,散發出十足的陽光帥氣和自然純淨的熟男氣息。這款棕栗色男生定位燙,透漏着白領氣質,梳在發頂的定位燙選擇棕栗色的