系統(tǒng)性能分析與診斷工具

一、CPU占用最高的10個進程

$ ps axww -o user,pid,pcpu,pmem,start,time,comm | head -1;ps axww -o user,pid,pcpu,pmem,start,time,comm  | grep -v PID |  sort -nr -k 3 | head
$ ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
$ ps auxw|head -1;ps auxw|sort -rn -k3|head -10

二、內(nèi)存占用最高的10個進程

$ ps axww -o user,pid,pcpu,pmem,start,time,comm | head -1 ;ps axww -o user,pid,pcpu,pmem,start,time,comm  | grep -v PID |  sort -nr -k 4 | head
$ ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
$ ps auxw|head -1;ps auxw|sort -rn -k4|head -10

三、虛擬內(nèi)存使用最多的前10個進程

$ ps auxw|head -1;ps auxw|sort -rn -k5|head -10

四、統(tǒng)計當前連接數(shù)

$ ss -an | grep -v "State" | awk '{++S[$1]} END {for(a in S) print a, S[a]}'
$ netstat -tan  | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

五、當前連接數(shù)最多的10個進程

$ ss -tnp | grep -v "State" | awk '{print $6}' | awk -F '"' '{print $2}' | awk '{++S[$1]} END {for(a in S) print a, S[a]}' | sort -nr -k2 | head
$ netstat -tnp | grep -v "Active" | grep -v "TIME_WAIT" | grep -v "State" | awk -F '/' '{print $NF}' | awk '{++S[$1]} END {for(a in S) print a, S[a]}' | sort -nr -k2 | head

六、Linux 運維命令掌握

Linux 下面日常運維使用的命令有太多了,根據(jù)個人的情況進行適當?shù)挠洃洝?br> 系統(tǒng)負載:top ,uptime,nmon,dstat 等
網(wǎng)絡(luò):ss,netstat,route,diag,ping,ip,lsof 等
io:dd,iostat,fio,nmon,dstat,pvs,lvs,vgs 等
內(nèi)存:free,dstat等
進程:ps,lsof 等
配置:lscpu,lspci,dmidecode,lsscsi,udev 等
設(shè)備識別:echo '---' ,rescan-scsi-bus.sh 等
診斷:strace,ltrace等
比如還有find 如何結(jié)合xargs ,tree的使用,lsblk 等等,還有很多很多,需要長期的積累,當然主要使用還是配置查看,LVM設(shè)置,網(wǎng)絡(luò)
還有很多成熟的開源和商業(yè)產(chǎn)品進行管理,在此不一一列舉,感覺可自行百度和google。
目前主流的python,ruby這些語言工具可以根據(jù)自身情況選擇一個掌握。

七、診斷工具

在日常的運維過程當中,不免要進行所謂的性能或者故障方面問題的診斷,工具和手段包羅萬象,在此我列舉一些日常使用的一些工具用于參考,
Pstack truss pmap gdb strace strace -o ssh.strace -Ttt -p 1983
ipcs 共享內(nèi)存 ipcrm
ldd
logsave logsave /tmp/logsave.log ls 紀錄命令的輸出到文件
lastlog 紀錄用戶最后的登錄時間 lastb顯示用戶錯誤登錄的紀錄
logwatch 監(jiān)控分析日志信息
grpck /etc/group
pwck /etc/passwd
pidstat pidof
iostat -xdm 1
blockdev
curl 訪問web 測試 比lynx好一點

八、用vmstat分析系統(tǒng)I/O情況

$ vmstat -n 3       (每個3秒刷新一次)

-bi:從塊設(shè)備讀入的數(shù)據(jù)總量(讀磁盤)(KB/S)
-bo:寫入到塊設(shè)備的數(shù)據(jù)總量(寫磁盤)(KB/S)
隨機磁盤讀寫的時候,這2個值越大(如超出1M),能看到CPU在IO等待的值也會越大

十、sar

sar [options] [-A] [-o file] t [n]

在命令行中,n 和t 兩個參數(shù)組合起來定義采樣間隔和次數(shù),t為采樣間隔,是必須有
的參數(shù),n為采樣次數(shù),是可選的,默認值是1,-o file表示將命令結(jié)果以二進制格式
存放在文件中,file 在此處不是關(guān)鍵字,是文件名。options 為命令行選項,sar命令
的選項很多,下面只列出常用選項:

-A:所有報告的總和。
-u:CPU利用率
-v:進程、I節(jié)點、文件和鎖表狀態(tài)。
-d:硬盤使用報告。
-r:內(nèi)存和交換空間的使用統(tǒng)計。
-g:串口I/O的情況。
-b:緩沖區(qū)使用情況。
-a:文件讀寫情況。
-c:系統(tǒng)調(diào)用情況。
-q:報告隊列長度和系統(tǒng)平均負載
-R:進程的活動情況。
-y:終端設(shè)備活動情況。
-w:系統(tǒng)交換活動。
-x { pid | SELF | ALL }:報告指定進程ID的統(tǒng)計信息,SELF關(guān)鍵字是sar進程本身的統(tǒng)計,ALL關(guān)鍵字是所有系統(tǒng)進程的統(tǒng)計。

用sar進行CPU利用率的分析

sar -u 2 10
Linux 2.6.18-53.el5PAE (localhost.localdomain)  03/28/2009
07:40:17 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle
07:40:19 PM       all         12.44      0.00         6.97          1.74         0.00        78.86
07:40:21 PM       all         26.75      0.00        12.50         16.00       0.00        44.75
07:40:23 PM       all         16.96      0.00         7.98          0.00         0.00        75.06
07:40:25 PM       all         22.50      0.00         7.00          3.25         0.00        67.25
07:40:27 PM       all         7.25        0.00         2.75          2.50         0.00        87.50
07:40:29 PM       all         20.05      0.00         8.56          2.93         0.00        68.46
07:40:31 PM       all         13.97      0.00         6.23          3.49         0.00        76.31
07:40:33 PM       all         8.25        0.00         0.75          3.50         0.00        87.50
07:40:35 PM       all         13.25      0.00         5.75          4.00         0.00        77.00
07:40:37 PM       all         10.03      0.00         0.50          2.51         0.00        86.97
Average:             all         15.15      0.00         5.91          3.99         0.00        74.95

在顯示內(nèi)容包括:
%user:CPU處在用戶模式下的時間百分比。
%nice:CPU處在帶NICE值的用戶模式下的時間百分比。
%system:CPU處在系統(tǒng)模式下的時間百分比。
%iowait:CPU等待輸入輸出完成時間的百分比。
%steal:管理程序維護另一個虛擬處理器時,虛擬CPU的無意識等待時間百分比。
%idle:CPU空閑時間百分比。
在所有的顯示中,我們應(yīng)主要注意%iowait和%idle,%iowait的值過高,表示硬盤存在I/O瓶頸,%idle值高,表示CPU較空 閑,如果%idle值高但系統(tǒng)響應(yīng)慢時,有可能是CPU等待分配內(nèi)存,此時應(yīng)加大內(nèi)存容量。%idle值如果持續(xù)低于10,那么系統(tǒng)的CPU處理能力相對 較低,表明系統(tǒng)中最需要解決的資源是CPU。

用sar進行運行進程隊列長度分析:

sar -q 2 10
Linux 2.6.18-53.el5PAE (localhost.localdomain)  03/28/2009
07:58:14 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
07:58:16 PM         0         493          0.64        0.56        0.49
07:58:18 PM         1         491          0.64        0.56        0.49
07:58:20 PM         1         488          0.59        0.55        0.49
07:58:22 PM         0         487          0.59        0.55        0.49
07:58:24 PM         0         485          0.59        0.55        0.49
07:58:26 PM         1         483          0.78        0.59        0.50
07:58:28 PM         0         481          0.78        0.59        0.50
07:58:30 PM         1         480          0.72        0.58        0.50
07:58:32 PM         0         477          0.72        0.58        0.50
07:58:34 PM         0         474          0.72        0.58        0.50
Average:               0         484          0.68        0.57        0.49

runq-sz 準備運行的進程運行隊列。
plist-sz 進程隊列里的進程和線程的數(shù)量
ldavg-1 前一分鐘的系統(tǒng)平均負載(load average)
ldavg-5 前五分鐘的系統(tǒng)平均負載(load average)
ldavg-15 前15分鐘的系統(tǒng)平均負載(load average)

順便說一下load avarage的含義
load average可以理解為[size=+0]每秒鐘CPU等待運行的進程個數(shù).
在Linux系統(tǒng)中,sar -q、uptime、w、top等命令都會有系統(tǒng)平均負載load average的輸出,那么什么是系統(tǒng)平均負載呢?
  系統(tǒng)平均負載被定義為在特定時間間隔內(nèi)運行隊列中的平均任務(wù)數(shù)。如果一個進程滿足以下條件則其就會位于運行隊列中:
  - 它沒有在等待I/O操作的結(jié)果
  - 它沒有主動進入等待狀態(tài)(也就是沒有調(diào)用'wait')
  - 沒有被停止(例如:等待終止)
  例如:

$ uptime
20:55:40 up 24 days,  3:06,  1 user,  load average: 8.13, 5.90, 4.94

命令輸出的最后內(nèi)容表示在過去的1、5、15分鐘內(nèi)運行隊列中的平均進程數(shù)量。
  一般來說只要每個CPU的當前活動進程數(shù)不大于3那么系統(tǒng)的性能就是良好的,如果每個CPU的任務(wù)數(shù)大于5,那么就表示這臺機器的性能有嚴重問題。對 于上面的例子來說,假設(shè)系統(tǒng)有兩個CPU,那么其每個CPU的當前任務(wù)數(shù)為:8.13/2=4.065。這表示該系統(tǒng)的性能是可以接受的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • pkgs.org:https://centos.pkgs.org/7/epel-x86_64/openconnec...
    運維經(jīng)理閱讀 162評論 0 0
  • 回首河道夕陽路,無故行人皆歡游。從學(xué)數(shù)載難知青,無涯末路思少白。 精神正茂厭學(xué)苦,老大唯傷不易回。黃少無季學(xué)未晚,...
    沐梵晟閱讀 412評論 0 1
  • “得到”訂閱專欄《李翔商業(yè)內(nèi)參》最近收集了幾位商界大佬的經(jīng)驗之談,關(guān)于如何當好企業(yè)領(lǐng)導(dǎo),既能有效管理,又能讓公司下...
    田園牧歌928閱讀 312評論 0 2
  • 家里有花,有新到的新寵透明茶具,給他們來了個高逼格的合影。 在這外面滴滴答答的雨天,把這些新寵們的合影配了首不是特...
    Yuxiaoa閱讀 262評論 0 0

友情鏈接更多精彩內(nèi)容