linux 60秒分析
這份清單適用於分析性能問題,並記錄了筆者登錄到性能不佳的Linux系統後最初60秒內通常會執行的操作。
- uptime
- dmesg | tail && cat /var/log/messages
- vmstat 1
- mpstat -P ALL 1
- pidstat 1
- iostat -xz 1
- free -m
- sar -n DEV 1
- sar -n tcp,ETCP 1
- sar -n SOCK 1 3
- top
uptime
uptime 命令用於顯示系統已運行的時間,並提供系統負載平均值的信息。以下是 uptime 命令提供的信息解釋:
┌──[liruilong@liruilongs.github.io]-[~]└─$man uptimeUPTIME(1) User Commands UPTIME(1)NAME uptime - Tell how long the system has been running.SYNOPSIS uptime [options]DESCRIPTION uptimegives a one line display of the following information.The current time, how long the system has been running, how many users are currently logged on, and the system load averages for the past 1, 5, and15min‐ utes. This is the same information contained in the header line displayed by w(1). Systemloadaveragesistheaveragenumber of processes that are either in a runnable or uninterruptable state.A process in a runnable state is either using the CPU or waiting to use the CPU.A processinunin‐ terruptablestate is waiting for some I/O access, eg waiting for disk.The averages are taken over the three time intervals.Load averages are not normalized for the number of CPUs in a system, so a load averageof1 means a single CPU system is loaded all the time while on a 4 CPU system it means it was idle 75% of the time. ......................................登錄後複製
uptime 可以快速查看當前系統時間以及運行時間,總的登錄用戶, 以及平均負載:
- 當前時間:顯示執行uptime命令時的系統當前時間。
- 系統運行時間:顯示系統自上次引導或重新啓動以來的運行時間。以”X天X小時X分鐘”的格式顯示。
- 用戶數量:表示當前登錄到系統的用戶數量。
- 系統負載平均值:顯示過去1分鐘、5分鐘和15分鐘的系統負載平均值。負載平均值代表處於運行狀態或等待運行狀態的平均進程數量。它指示系統的活動水平和資源利用程度。負載平均值並不針對系統中的CPU核數進行歸一化
┌──[root@vms100.liruilongs.github.io]-[~]└─$uptime 11:14:26 up 16 min,1 user,load average: 21.37, 18.64, 16.25登錄後複製
這裏主要關注 平均負載:
在Linux 系統中,這些數字包含了想要在 CPU 上運行的進程,同時也包含了阻塞在不可中斷IO(通常是磁盤 I/O)上的進程。這給出了一個高層次視角的資源負載(或者說資源需求)。
3個數字分別是指數衰減的1分鐘/5分鐘/15分鐘滑動窗累積值。通過這3個值可以大致瞭解負載隨時間變化的情況。
快速查看CPU核數可以通過top命令然後按1鍵查看
top - 11:21:36 up 23 min,1 user,load average: 22.36, 19.03, 17.14Tasks: 443 total, 5 running, 438 sleeping, 0 stopped, 0 zombie%Cpu0:6.4 us,5.4 sy,0.0 ni, 77.9 id,0.0 wa,4.4 hi,5.9 si,0.0 st%Cpu1:9.2 us, 12.2 sy,0.0 ni, 71.9 id,3.6 wa,2.0 hi,1.0 si,0.0 st%Cpu2:4.8 us,3.6 sy,0.0 ni, 68.8 id,4.8 wa, 18.0 hi,0.0 si,0.0 st%Cpu3:4.5 us,5.5 sy,0.0 ni, 72.7 id,2.7 wa,0.5 hi, 14.1 si,0.0 stMiB Mem :15730.5 total, 7489.9 free, 6823.5 used, 1417.2 buff/cacheMiB Swap: 2068.0 total, 2068.0 free,0.0 used. 8496.2 avail Mem登錄後複製
上面的例子顯示負載最近有大幅的提升。一般情況下(還受到其他因素的影響,I/O 操作等),負載數與系統 CPU 核數的關係可以用以下規則來理解:
在top命令然後按1鍵的基礎上可以按 t 鍵對數據進行可視化展示
top - 11:22:26 up 24 min,1 user,load average: 15.02, 17.58, 16.74Tasks: 449 total,19 running, 430 sleeping, 0 stopped, 0 zombie%Cpu0:24.5/37.1 62[|||||||||||||||||||||||||||||||||||||||||||||||||||||||||]%Cpu1:15.5/28.0 43[|||||||||||||||||||||||||||||||||||||||| ]%Cpu2:37.9/61.1 99[|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ]%Cpu3:15.8/49.7 66[|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||登錄後複製
- 如果負載數小於 CPU 核數的70-80%:這通常表示系統的負載較輕,有足夠的處理能力來處理所有的任務。系統響應時間較短,性能較好。
- 如果負載數接近或超過 CPU 核數的100%:這表示系統的負載很高,正在接近或達到其處理能力的極限。系統可能會出現延遲或變慢的情況,響應時間變長。
- 如果負載數遠遠超過 CPU 核數的100%:這表示系統的負載非常高,超過了系統的處理能力。系統可能會出現嚴重的延遲,甚至崩潰或無法響應。
負載的平均值值得在排障過程中被首先進行檢查,以確認性能問題是否還存在。在一個容錯的環境中,一臺存在性能問題的服務器,在你登錄到機器上時,也許已經自動從服務列表中下線了。
一個較高的 15分鐘負載與一個較低的1分鐘負載同時出現,可能意味着已經錯過了問題發生的現場。
┌──[root@vms100.liruilongs.github.io]-[~]└─$uptime 11:33:45 up 35 min,1 user,load average: 1.39, 6.06, 11.64┌──[root@vms100.liruilongs.github.io]-[~]└─$登錄後複製
dmesg | tail 或者 cat /var/log/messages
或者 journalctl -k | tail 也可以結合 cat /var/log/messages 來排查
┌──[liruilong@liruilongs.github.io]-[~]└─$dmesg | tail[ 12.216869] vmwgfx 0000:00:0f.0: [drm] Available shader model: SM_5.[ 12.225954] [drm] Initialized vmwgfx 2.20.0 20211206 for 0000:00:0f.0 on minor 0[ 12.233005] Bluetooth: hci0: unexpected cc 0x0c12 length: 2 <p>這個命令顯示過去 10 條系統日誌,如果有的話。注意在這裏尋找可能導致性能問題的錯誤。 添加 T和t 可以展示對應的時間</p><pre class="brush:php;toolbar:false;">┌──[root@vms100.liruilongs.github.io]-[~]└─$dmesg -T| tail[日 1月 14 10:58:57 2024] vmxnet3 0000:1b:00.0 ens256: NIC Link is Up 10000 Mbps[日 1月 14 10:59:38 2024] device ovs-system entered promiscuous mode[日 1月 14 10:59:39 2024] Timeout policy base is empty[日 1月 14 10:59:39 2024] Failed to associated timeout policy `ovs_test_tp'[日 1月 14 10:59:40 2024] device br-tun entered promiscuous mode[日 1月 14 10:59:40 2024] device br-int entered promiscuous mode[日 1月 14 10:59:40 2024] device ens224 entered promiscuous mode[日 1月 14 10:59:40 2024] device br-ex entered promiscuous mode[日 1月 14 11:03:14 2024] capability: warning: `privsep-helper' uses deprecated v2 capabilities in a way that may be insecure[日 1月 14 11:04:34 2024] hrtimer: interrupt took 11973872 ns┌──[root@vms100.liruilongs.github.io]-[~]└─$登錄後複製
在日常維護中,往往結合 grep 快速定位問題
┌──[root@liruilongs.github.io]-[~]└─$ dmesg -T | grep -i error[五 11月 10 10:32:57 2023] BERT: Boot Error Record Table support is disabled. Enable it by using bert_enable as kernel parameter.┌──[root@liruilongs.github.io]-[~]└─$ dmesg -T | grep -i warn[五 11月 10 10:32:54 2023] Warning: Intel Processor - this hardware has not undergone upstream testing. Please consult http://wiki.centos.org/FAQ for more information┌──[root@liruilongs.github.io]-[~]└─$登錄後複製
比如 內存不足引發OOM和TCP 的丟棄`請求的記錄。
┌──[root@vms83.liruilongs.github.io]-[~]└─$cat /var/log/messages | grep -i memoryAug 10 20:37:27 vms83 kernel: [<ffffffff81186bd6>] out_of_memory+0x4b6/0x4f0Aug 10 20:37:27 vms83 kernel: Out of memory: Kill process 25143 (bigmem) score 1347 or sacrifice child</ffffffff81186bd6>登錄後複製
TCP 的相關日誌甚至指引了我們下一步的分析方向:查看SNMP 計數器值。
vmstat 1
┌──[root@liruilongs.github.io]-[~]└─$man vmstatVMSTAT(8) System Administration VMSTAT(8)NAME vmstat - Report virtual memory statisticsSYNOPSIS vmstat [options] [delay [count]]DESCRIPTION vmstat reports information about processes, memory, paging, block IO, traps, disks and cpu activity. The first report produced gives averages since the last reboot.Additional reports give information on a sam‐ pling period of length delay.The process and memory reports are instantaneous in either case. ..........................登錄後複製
┌──[root@vms100.liruilongs.github.io]-[~]└─$vmstat 1procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- rb swpd free buffcache si sobibo in cs us sy id wa st6900 7700836 4204 144164800 369 101569 1819 11 35 45802610 7711264 4204 144166800 012 1209 13809 24 6430 800 7710592 4204 144166400 027779 12154 11 78701300 7699752 4204 144166800 0 0766 13133 25 72003100 7696384 4204 144228800 01412 1157 2928 12 32 49806000 7675296 4204 144429200 026 1068 138249 26 51 1403400 7670552 4204 144428000 017798 1514 14 52 34106010 7686712 4204 144450800 0 8807 21276 24 67305920 7676624 4204 144523200 0 8620 68307 66 22506800 7677948 4204 144244000 056 1329 3739 13 22 597010000 7677920 4204 144234000 021 1030 3778 16 50 29501900 7669208 4204 144322000 043958 3054 19 65 1060 520 7776028 4204 144536400 040 1124 20039 18 33 44408410 7764600 4204 144724000 036867 23470 14 53 27502200 7711224 4204 144732800 0 112 1353 11900 13 34 50403600 7734856 4204 144757200 0 321 1382 11113 10 22 47 2102810 7738716 4204 144650800 0 157889 57793 15 64 1803000 7719320 4204 144669600 0 151 1409 85265 27 57 100 710 7713972 4204 144719200 025 1372 23431 13 19 63501800 7715444 4204 144735600 056935 77506 19 67705400 7766760 4204 144063200 064 1237 4686 11 26 56705200 7712752 4204 144181600 0 4 1265 6567 25 33 4200^C┌──[root@vms100.liruilongs.github.io]-[~]└─$登錄後複製
需要檢查的列包括如下幾個:
- r:CPU上正在執行的和等待執行的進程數量。相比平均負載來說,這是一個更好的排查CPU飽和度的指標,因爲它不包含IO。可以這樣解釋:一個比CPU數量多的 r 值代表 CPU 資源處於飽和狀態。
- free:空閒內存,單位是KB。如果數字位數一眼數不過來,那麼內存應該是夠用的。使用free -m 命令,可以更好地解釋空閒內存。
- si 和so:頁換入和頁換出。如果這些值不是零,那麼意味着系統內存緊張。這個值只有在配置開啓了交換分區後纔會起作用。
- us、sy、id、wa和st:這些都是 CPU運行時間的進一步細分,是對所有的CPU 取平均之後的結果。它們分別代表用戶態時間、系統態時間(內核)、空閒率、等待I/O,以及被竊取時間(stolen time,指的是虛擬化環境下,被其他客戶機所擠佔的時間;或者是Xen 環境下客戶機自身隔離的驅動域運行時間)。
上面的例子顯示了CPU時間主要花在系統態上。這指引我們下一步將主要針對系統態代碼進行剖析。
┌──[root@liruilongs.github.io]-[~]└─$vmstatprocs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- rb swpd free buffcache si sobibo in cs us sy id wa st 200 1057540 2072 1761012006827 150159584 8710┌──[root@liruilongs.github.io]-[~]└─$登錄後複製
查看CPU平均值,當前系統中,可運行進程爲2(r),被阻塞的進程爲0(b),系統發生中斷次數1501(in),系統發生上下文切換次數爲595(cs),系統代碼消耗CPU爲4%(sy),用戶代碼消耗CPU爲8%(us),系統空閒佔比87%(id),剩餘1%屬於等待IO消耗的CPU空閒狀態(wa)
┌──[root@liruilongs.github.io]-[~]└─$vmstat -s.......... 206387 non-nice user cpu ticks3 nice user cpu ticks 100381 system cpu ticks2184710 idle cpu ticks12604 IO-wait cpu ticks0 IRQ cpu ticks 4699 softirq cpu ticks0 stolen cpu ticks............ 37633050 interrupts 64361523 CPU context switches........... 210962 forks登錄後複製
這裏的ticks爲一個時間單位,相關數據爲自系統啓動時間以來的數據。forks表示系統創建以來的進程數,CPU context switches表示上下文文切換次數,interrupts即中斷次數,剩下的參數對應上面的列理解即可,stolen cpu 這個不太理解
mpstat -P ALL l
需要裝包
┌──[root@vms100.liruilongs.github.io]-[~]└─$yum install -y sysstat登錄後複製
這個命令將每個CPU分解到各個狀態下的時間打印出來。
┌──[root@vms100.liruilongs.github.io]-[~]└─$mpstat -P ALL 1Linux 4.18.0-477.27.1.el8_8.x86_64 (vms100.liruilongs.github.io)2024年01月14日_x86_64_(4 CPU)11時43分36秒CPU%usr %nice%sys %iowait%irq %soft%steal%guest%gnice %idle11時43分37秒all 12.890.00 14.84 50.006.254.300.000.000.00 11.7211時43分37秒0 21.570.00 15.69 50.985.881.960.000.000.003.9211時43分37秒1 12.680.009.86 76.061.410.000.000.000.000.0011時43分37秒2 12.700.00 25.403.17 17.460.000.000.000.00 41.2711時43分37秒37.040.009.86 64.791.41 14.080.000.000.002.8211時43分37秒CPU%usr %nice%sys %iowait%irq %soft%steal%guest%gnice %idle11時43分38秒all8.650.00 13.16 31.581.50 12.780.000.000.00 32.3311時43分38秒0 17.650.00 25.495.881.96 25.490.000.000.00 23.5311時43分38秒18.000.00 10.67 24.002.67 10.670.000.000.00 44.0011時43分38秒24.170.009.72 77.780.002.780.000.000.005.5611時43分38秒37.350.00 10.29 10.291.47 16.180.000.000.00 54.4111時43分38秒CPU%usr %nice%sys %iowait%irq %soft%steal%guest%gnice %idle11時43分39秒all8.060.00 10.89 52.42 11.290.000.000.000.00 17.3411時43分39秒0 12.310.00 12.31 69.236.150.000.000.000.000.0011時43分39秒14.410.004.41 67.658.820.000.000.000.00 14.7111時43分39秒28.330.00 13.33 65.008.330.000.000.000.005.0011時43分39秒37.270.00 14.550.00 23.640.000.000.000.00 54.5511時43分39秒CPU%usr %nice%sys %iowait%irq %soft%steal%guest%gnice %idle11時43分40秒all 24.690.007.11 18.832.93 25.940.000.000.00 20.5011時43分40秒0 46.670.00 17.78 31.112.222.220.000.000.000.0011時43分40秒1 11.110.006.94 37.500.000.000.000.000.00 44.4411時43分40秒2 41.460.007.329.760.000.000.000.000.00 41.4611時43分40秒3 16.050.001.230.007.41 75.310.000.000.000.0011時43分40秒CPU%usr %nice%sys %iowait%irq %soft%steal%guest%gnice %idle11時43分41秒all 24.040.00 16.35 12.98 12.506.250.000.000.00 27.8811時43分41秒0 28.120.00 21.880.00 31.250.000.000.000.00 18.7511時43分41秒1 21.670.00 20.000.00 20.00 11.670.000.000.00 26.6711時43分41秒27.580.00 16.67 16.676.061.520.000.000.00 51.5211時43分41秒3 46.000.008.00 32.000.00 10.000.000.000.004.00登錄後複製
對於比較高的 %iowait(等待I/O操作完成佔用CPU的百分比,表示CPU時間用於等待I/O操作完成的百分比。) 時間也要注意,可以使用磁盤 I/O工具進一步分析
如果出現較高的 %sys 值(系統態佔用),可以使用系統調用(syscall)跟蹤和內核跟蹤,以及CPU剖析等手段進一步分析。
%idle指CPU的空閒率,通過檢查單個熱點(繁忙)CPU,挑出一個可能的線程擴展性問題
上面的輸出暴露了一個問題:CPU0 的用戶態的佔比高達 100%,這是單個線程遇到瓶頸的特徵。
pidstat 1
pidstat(1)命令按每個進程展示 CPU的使用情況(包括用戶態和系統態時間的分解)。top(l)命令雖然也很流行,但是pidstat(1)默認支持滾動打印輸出,這樣可以採集到不同時間段的數據變化。
┌──[root@vms100.liruilongs.github.io]-[~]└─$pidstat 3Linux 4.18.0-477.27.1.el8_8.x86_64 (vms100.liruilongs.github.io)2024年01月14日_x86_64_(4 CPU)11時31分10秒 UID PID%usr %system%guest %wait%CPU CPUCommand11時31分13秒 0140.001.990.001.661.99 0rcu_sched11時31分13秒 0330.000.660.000.000.66 3ksoftirqd/311時31分13秒 0 7180.000.330.002.650.33 3kworker/3:3-events11時31分13秒 0 9701.990.660.000.332.65 0tuned11時31分13秒 4243521330.660.000.000.660.66 2neutron-dhcp-ag11時31分13秒 4240721340.330.000.000.000.33 2cinder-schedule11時31分13秒 4243521370.660.330.000.330.99 0neutron-openvsw11時31分13秒 4243521820.330.000.000.330.33 3neutron-metadat11時31分13秒 4241824370.990.330.000.991.32 0heat-engine11時31分13秒 4241528420.660.990.000.661.66 0glance-api11時31分13秒 4243629360.990.000.000.660.99 3nova-conductor....................................................................................平均時間: 4243698190.330.000.001.500.33 -nova-conductor平均時間: 4241899510.170.500.000.000.66 -heat-engine平均時間: 4241899520.170.000.000.170.17 -heat-engine平均時間: 0 241780.000.170.000.000.17 -sshd平均時間: 42435 426620.330.170.000.330.50 -neutron-l3-agen平均時間: 0 797750.170.660.000.000.83 -pidstat┌──[root@vms100.liruilongs.github.io]-[~]└─$登錄後複製
這個輸出顯示了一個Java 進程每秒使用的CPU 資源在變化:這個百分比是對全部CPU相加的和因此500%相當於5個100%運行的CPU。
iostat -xz
┌──[root@vms100.liruilongs.github.io]-[~]└─$iostat -xzLinux 4.18.0-477.27.1.el8_8.x86_64 (vms100.liruilongs.github.io)2024年01月14日_x86_64_(4 CPU)avg-cpu:%user %nice %system %iowait%steal %idle10.780.00 36.46 20.390.00 32.37Devicer/s w/s rkB/s wkB/s rrqm/s wrqm/s%rrqm%wrqm r_await w_await aqu-sz rareq-sz wareq-szsvctm%utilnvme0n1101.86 23.92 4143.65729.07 0.07 0.98 0.07 3.92 33.62 38.59 4.3540.6830.48 5.1064.21nvme0n20.550.00 15.620.00 0.00 0.00 0.00 0.00 28.660.00 0.0228.50 0.0019.27 1.06scd0 0.050.000.010.00 0.00 0.00 0.00 0.000.000.00 0.00 0.17 0.00 0.56 0.00dm-087.79 24.64 3865.46718.38 0.00 0.00 0.00 0.00 37.96 42.92 4.3944.0329.16 5.5962.87dm-1 0.510.00 11.590.00 0.00 0.00 0.00 0.004.500.00 0.0022.65 0.00 4.58 0.23登錄後複製
這個工具顯示了存儲設備的IO 指標。要檢查的列包括如下幾個。
- r/s、w/s、rkB/s和 wkB/s:這些是每秒向設備發送的讀、寫次數,以及讀、寫字節數。可以用這些指標對業務負載畫像。某些性能問題僅僅是因爲超過了能夠承受的最大負載導致的。
- await:I/O 的平均響應時間,以毫秒爲單位。這是應用需要承受的時間,它同時包含了I/O 隊列時間和服務時間。超過預期的平均響應時間,可看作設備已飽和或者設備層面有問題的表徵。
- aqu-szavgqu-sz:設備請求隊列的平均長度。比1大的值有可能是發生飽和的表徵(不過對有些設備,尤其是對基於多塊磁盤的虛擬設備來說,通常以並行方式處理請求)。
- %util:設備使用率。這是設備繁忙程度的百分比,顯示了每秒設備開展實際工作的時間佔比。不過它展示的並不是容量規劃意義下的使用率,因爲設備可以並行處理請求。大於60%的值通常會導致性能變差(可以通過await(完成對一個請求的服務所需的平均時間(按毫秒計),該平均時間爲請求在磁盤隊列中等待的時間加上磁盤對其服務所需的時間) 字段確認),不過這也取決於具體設備。接近 100% 的值通常代表了設備達到飽和狀態。
iostat的擴展磁盤統計信息:
統計數據 | 說明 |
---|---|
rrqm/s | 在提交給磁盤前,被合併的讀請求的數量 |
wrqm/s | 在提交給磁盤前,被合併的寫請求的數量 |
r/s | 每秒提交給磁盤的讀請求數量 |
w/s | 每秒提交給磁盤的寫請求數量 |
rsec/s | 每秒讀取的磁盤扇區數 |
wsec/s | 每秒寫入的磁盤扇區數 |
rkB/s | 每秒從磁盤讀取了多少KB的數據 |
wkB/s | 每秒向磁盤寫入了多少KB的數據 |
avgrq-sz | 磁盤請求的平均大小(按扇區計) |
avgqu-sz | 磁盤請求隊列的平均大小。 |
await | 完成對一個請求的服務所需的平均時間(按毫秒計),該平均時間爲請求在磁盤隊列中等待的時間加上磁盤對其服務所需的時間 |
svctm | 提交到磁盤的請求的平均服務時間(按毫秒計)。該項表明磁盤完成一個請求所花費的平均時間。與await不同,該項不包含在隊列中等待的時間 |
%util | 利用率 |
當avgqu-sz的值特別大的時候,且請求等待時間await遠遠高於請求服務svctm所花費時間,且利用率%util爲100%的時候,表明該磁盤處於飽和狀態。
這有時會引起困惑,比如當iostat(1)報告說某個設備已經達到100%的使用率後,還能夠接受更高的負載。它只是報告某個設備在一段時間內100%繁忙,並沒有說設備的使用率達到100%了:此時也許仍然可以接受更高的負載。在一個卷後面有多個磁盤設備支撐的情況下由於可以並行處理請求,iostat(1)中的%util這個指標就更加具有迷惑性。
free -m
┌──[root@vms100.liruilongs.github.io]-[~]└─$free -mtotalusedfreesharedbuff/cache availableMem:15730756464405217257754Swap:2067 02067登錄後複製
這個輸出顯示了用兆字節(MB)作爲單位的可用內存。檢查可用內存 (available)是否接近0;這個值顯示了在系統中還有多少實際剩餘內存可用,包括緩衝區和頁緩存區。將一些內存用於緩存可以提升文件系統的性能。可以根據不同的參數更換單位
┌──[root@vms100.liruilongs.github.io]-[~]└─$free -gtotalusedfreesharedbuff/cache availableMem: 15 7 6 0 1 7Swap: 2 0 2┌──[root@vms100.liruilongs.github.io]-[~]└─$登錄後複製
sar -n DEV 1
顯示每個設備發送和接收的數據包數和字節數信息
┌──[root@vms100.liruilongs.github.io]-[~]└─$sar -n DEV 1Linux 4.18.0-477.27.1.el8_8.x86_64 (vms100.liruilongs.github.io)2024年01月14日_x86_64_(4 CPU)11時40分16秒 IFACE rxpck/s txpck/srxkB/stxkB/s rxcmp/s txcmp/srxmcst/s %ifutil11時40分17秒lo 17.54 17.540.980.980.000.000.000.0011時40分17秒ens160 50.88 58.773.794.070.000.000.880.0011時40分17秒ens224224.560.00 18.850.000.000.001.750.0011時40分17秒ens2560.000.000.000.000.000.000.000.0011時40分17秒 ovs-system0.000.000.000.000.000.000.000.0011時40分17秒br-tun0.000.000.000.000.000.000.000.0011時40分17秒 tap9f7d35c5-150.000.000.000.000.000.000.000.0011時40分17秒br-int0.000.000.000.000.000.000.000.0011時40分17秒 br-ex0.000.000.000.000.000.000.000.00^C平均時間: IFACE rxpck/s txpck/srxkB/stxkB/s rxcmp/s txcmp/srxmcst/s %ifutil平均時間:lo 22.94 22.941.291.290.000.000.000.00平均時間:ens160 50.22 51.083.704.320.000.000.870.00平均時間:ens224224.240.00 18.700.000.000.001.300.00平均時間:ens2560.000.000.000.000.000.000.000.00平均時間: ovs-system0.000.000.000.000.000.000.000.00平均時間:br-tun0.000.000.000.000.000.000.000.00平均時間: tap9f7d35c5-150.000.000.000.000.000.000.000.00平均時間:br-int0.000.000.000.000.000.000.000.00平均時間: br-ex0.000.000.000.000.000.000.000.00┌──[root@vms100.liruilongs.github.io]-[~]└─$登錄後複製
列 | 說明 |
---|---|
rxpck/s | 數據包接收速率 |
txpck/s | 數據包發送速率 |
rxkB/s | kb接收速率 |
txkB/s | kb發送速率 |
rxcmp/s | 壓縮包接收速率 |
txcmp/s | 壓縮包發送速率 |
rxmcst/s | 多播包接收速率 |
顯示每個設備的發送和接收錯誤信息
┌──[root@vms81.liruilongs.github.io]-[~/ansible]└─$sar -n EDEV 1 1Linux 3.10.0-693.el7.x86_64 (vms81.liruilongs.github.io)2022年05月14日_x86_64_(2 CPU)22時53分07秒 IFACE rxerr/s txerr/scoll/srxdrop/stxdrop/stxcarr/srxfram/srxfifo/stxfifo/s22時53分08秒 ens320.000.000.000.000.000.000.000.000.0022時53分08秒 cali86e7ca9e9c20.000.000.000.000.000.000.000.000.0022時53分08秒 cali13a4549bf1e0.000.000.000.000.000.000.000.000.0022時53分08秒 cali5a282a7bbb00.000.000.000.000.000.000.000.000.0022時53分08秒 cali12cf25006b50.000.000.000.000.000.000.000.000.0022時53分08秒 cali45e02b0b21e0.000.000.000.000.000.000.000.000.0022時53分08秒lo0.000.000.000.000.000.000.000.000.0022時53分08秒 calicb34164ec790.000.000.000.000.000.000.000.000.0022時53分08秒 tunl00.000.000.000.000.000.000.000.000.0022時53分08秒 docker00.000.000.000.000.000.000.000.000.00平均時間: IFACE rxerr/s txerr/scoll/srxdrop/stxdrop/stxcarr/srxfram/srxfifo/stxfifo/s平均時間: ens320.000.000.000.000.000.000.000.000.00平均時間: cali86e7ca9e9c20.000.000.000.000.000.000.000.000.00平均時間: cali13a4549bf1e0.000.000.000.000.000.000.000.000.00平均時間: cali5a282a7bbb00.000.000.000.000.000.000.000.000.00平均時間: cali12cf25006b50.000.000.000.000.000.000.000.000.00平均時間: cali45e02b0b21e0.000.000.000.000.000.000.000.000.00平均時間:lo0.000.000.000.000.000.000.000.000.00平均時間: calicb34164ec790.000.000.000.000.000.000.000.000.00平均時間: tunl00.000.000.000.000.000.000.000.000.00平均時間: docker00.000.000.000.000.000.000.000.000.00┌──[root@vms81.liruilongs.github.io]-[~/ansible]└─$登錄後複製
列 | 說明 |
---|---|
rxerr/s | 接收錯誤率 |
txerr/s | 發送錯誤率 |
co11/s | 發送時的以太網衝突率 |
rxdrop/s | 由於Linux內核緩衝區不足而導致的接收幀丟棄率 |
txdrop/s | 由於Linux內核緩衝區不足而導致的發送幀丟棄率 |
txcarr/s | 由於載波錯誤而導致的發送幀丟棄率 |
rxfram/s | 由於幀對齊錯誤而導致的接收幀丟棄率 |
rxfifo/s | 由於FIFO錯誤而導致的接收幀丟棄率 |
txfifo/s | 由於FIFO錯誤而導致的發送幀丟棄率 |
顯示使用套接字(TCP、UDP和RAW)的總數信息
┌──[root@vms81.liruilongs.github.io]-[~/ansible]└─$sar -n SOCK 1 3Linux 3.10.0-693.el7.x86_64 (vms81.liruilongs.github.io)2022年05月14日_x86_64_(2 CPU)22時56分23秒totscktcpsckudpsckrawsck ip-fragtcp-tw22時56分24秒3487 245 9 0 0 16322時56分25秒3487 245 9 0 0 16522時56分26秒3487 245 9 0 0 167平均時間:3487 245 9 0 0 165┌──[root@vms81.liruilongs.github.io]-[~/ansible]└─$登錄後複製
列 | 說明 |
---|---|
totsck | 當前正在被使用的套接字總數 |
tcpsck | 當前正在被使用的TCP套接字總數 |
udpsck | 當前正在被使用的UDP套接字總數 |
rawsck | 當前正在被使用的RAW套接字總數 |
ip-frag | IP分片的總數 |
sar -n TCP,ETCP 1
┌──[root@vms100.liruilongs.github.io]-[~]└─$sar -n TCP,ETCP 1Linux 4.18.0-477.27.1.el8_8.x86_64 (vms100.liruilongs.github.io)2024年01月14日_x86_64_(4 CPU)11時39分24秒active/s passive/siseg/soseg/s11時39分25秒0.000.00 16.50 16.5011時39分24秒atmptf/sestres/s retrans/s isegerr/s orsts/s11時39分25秒0.000.000.000.00 15.5311時39分25秒active/s passive/siseg/soseg/s11時39分26秒0.000.005.005.0011時39分25秒atmptf/sestres/s retrans/s isegerr/s orsts/s11時39分26秒0.000.000.000.004.00.................................^C平均時間:active/s passive/siseg/soseg/s平均時間:0.000.00 17.82 17.82平均時間:atmptf/sestres/s retrans/s isegerr/s orsts/s平均時間:0.000.000.000.00 16.83┌──[root@vms100.liruilongs.github.io]-[~]└─$登錄後複製
使用sar(1)工具來查看 TCP 指標和TCP 錯誤信息。相關的字段包括如下幾個。
- active/s:每秒本地發起的 TCP連接的數量(通過調用connect0)創建)。
- passive/s:每秒遠端發起的 TCP連接的數量(通過調用accept0創建)。
- retrans/s:每秒TCP 重傳的數量。
- orsts/s:每秒的連接重置數。表示每秒鐘發生的連接重置次數。
- atmptf/s:每秒的連接嘗試次數。表示每秒鐘有多少個連接嘗試被髮起。
- estres/s:每秒建立的連接數。表示每秒鐘成功建立的連接數。
主動和被動連接計數對於業務負載畫像很有用。重傳則是網絡或者遠端主機有問題的徵兆。
top
┌──[root@vms100.liruilongs.github.io]-[~]└─$toptop - 11:46:44 up 8 min,1 user,load average: 6.52, 17.45, 10.38Tasks: 449 total, 1 running, 448 sleeping, 0 stopped, 0 zombie%Cpu(s):0.9 us,1.1 sy,0.0 ni, 96.8 id,0.0 wa,0.6 hi,0.5 si,0.0 stMiB Mem :15730.5 total, 7503.6 free, 7147.4 used, 1079.5 buff/cacheMiB Swap: 2068.0 total, 2068.0 free,0.0 used. 8177.7 avail MemPID USERPRNIVIRTRESSHR S%CPU%MEM TIME+ COMMAND 1947 42418 20 0555196 13297220272 S 1.3 0.8 0:12.86 heat-engine10320 42436 20 0540276 12220017492 S 1.3 0.8 0:08.95 nova-scheduler949 root20 06940723164016876 S 1.0 0.2 0:16.58 tuned 1945 42415 20 0749212 14256434988 S 1.0 0.9 0:12.38 glance-api 1965 42436 20 0540120 12184817324 S 1.0 0.8 0:12.16 nova-conductor15567 root20 0269540 5228 4160 R 1.0 0.0 0:00.05 top..........................................登錄後複製
以 top 命令作爲結束,對相關結果進行二次確認,並能夠瀏覽系統和進程的摘要信息運氣好的話,這個60 秒分析過程會幫助你找到一些性能問題的線索。
可以通過 t 鍵和 m 對數據進行可視化展示
top - 19:32:22 up 2 days,3:01,1 user,load average: 0.00, 0.02, 0.05Tasks: 237 total, 2 running, 235 sleeping, 0 stopped, 0 zombie%Cpu0: 0.0/0.0 0[ ]%Cpu1: 0.0/0.0 0[ ]%Cpu2: 0.0/0.3 0[ ] %Cpu3: 0.0/0.0 0[ ]%Cpu4: 0.0/0.0 0[ ]%Cpu5: 0.0/0.0 0[ ]%Cpu6: 0.0/0.0 0[ ]%Cpu7: 0.0/0.0 0[ ]KiB Mem : 14.9/8154892[|||||||||||||| ]KiB Swap:0.0/0[ ]登錄後複製
以上就是Linux 60秒快速性能分析操作手冊的詳細內容,更多請關注本站其它相關文章!