99久久久精品免费观看国产,紧身短裙女教师波多野,正在播放暮町ゆう子在线观看,欧美激情综合色综合啪啪五月

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術(shù)干貨  > 抓住Linux黃金60秒

抓住Linux黃金60秒

來源:千鋒教育
發(fā)布人:syq
時間: 2022-09-07 10:05:04 1662516304

  如果你的Linux服務(wù)器突然負載暴增,告警短信快發(fā)爆你的手機,如何在最短時間內(nèi)找出Linux性能問題所在?來看Netflix性能工程團隊的這篇博文,看它們通過十條命令在一分鐘內(nèi)對機器性能問題進行診斷。

抓住Linux黃金60秒

  概述

  通過執(zhí)行以下命令,可以在1分鐘內(nèi)對系統(tǒng)資源使用情況有個大致的了解。

  •   uptime
  •   dmesg | tail
  •   vmstat 1
  •   mpstat -P ALL 1
  •   pidstat 1
  •   iostat -xz 1
  •   free -m
  •   sar -n DEV 1
  •   sar -n TCP,ETCP 1
  •   top

  其中一些命令需要安裝sysstat包,有一些由procps包提供。這些命令的輸出,有助于快速定位性能瓶頸,檢查出所有資源(CPU、內(nèi)存、磁盤IO等)的利用率(utilization)、飽和度(saturation)和錯誤(error)度量,也就是所謂的USE方法。

  下面我們來逐一介紹下這些命令,有關(guān)這些命令更多的參數(shù)和說明,請參照命令的手冊。

  uptime

42

  這個命令可以快速查看機器的負載情況。在Linux系統(tǒng)中,這些數(shù)據(jù)表示等待CPU資源的進程和阻塞在不可中斷IO進程(進程狀態(tài)為D)的數(shù)量。這些數(shù)據(jù)可以讓我們對系統(tǒng)資源使用有一個宏觀的了解。

  命令的輸出分別表示1分鐘、5分鐘、15分鐘的平均負載情況。通過這三個數(shù)據(jù),可以了解服務(wù)器負載是在趨于緊張還是區(qū)域緩解。如果1分鐘平均負載很高,而15分鐘平均負載很低,說明服務(wù)器正在命令高負載情況,需要進一步排查CPU資源都消耗在了哪里。反之,如果15分鐘平均負載很高,1分鐘平均負載較低,則有可能是CPU資源緊張時刻已經(jīng)過去。

  上面例子中的輸出,可以看見最近1分鐘的平均負載非常高,且遠高于最近15分鐘負載,因此我們需要繼續(xù)排查當前系統(tǒng)中有什么進程消耗了大量的資源。可以通過下文將會介紹的vmstat、mpstat等命令進一步排查。

  dmesg丨tail

$ dmesg | tail

[1880957.563150] perl invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0

[...]

[1880957.563400] Out of memory: Kill process 18694 (perl) score 246 or sacrifice child

[1880957.563408] Killed process 18694 (perl) total-vm:1972392kB, anon-rss:1953348kB, file-rss:0kB

[2320864.954447] TCP: Possible SYN flooding on port 7001. Dropping request.  Check SNMP counters.

  該命令會輸出系統(tǒng)日志的最后10行。示例中的輸出,可以看見一次內(nèi)核的oom kill和一次TCP丟包。這些日志可以幫助排查性能問題。千萬不要忘了這一步。

  vmstat 1

$ vmstat 1

procs ---------memory---------- ---swap-- -----io---- -system-- ------cpu-----

 r  b swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

34  0    0 200889792  73708 591828    0    0     0     5    6   10 96  1  3  0  0

32  0    0 200889920  73708 591860    0    0     0   592 13284 4282 98  1  1  0  0

32  0    0 200890112  73708 591860    0    0     0     0 9501 2154 99  1  0  0  0

32  0    0 200889568  73712 591856    0    0     0    48 11900 2459 99  0  0  0  0

32  0    0 200890208  73712 591860    0    0     0     0 15898 4840 98  1  1  0  0

  vmstat(8) 命令,每行會輸出一些系統(tǒng)核心指標,這些指標可以讓我們更詳細的了解系統(tǒng)狀態(tài)。后面跟的參數(shù)1,表示每秒輸出一次統(tǒng)計信息,表頭提示了每一列的含義,這幾介紹一些和性能調(diào)優(yōu)相關(guān)的列:

  r:等待在CPU資源的進程數(shù)。這個數(shù)據(jù)比平均負載更加能夠體現(xiàn)CPU負載情況,數(shù)據(jù)中不包含等待IO的進程。如果這個數(shù)值大于機器CPU核數(shù),那么機器的CPU資源已經(jīng)飽和。

  free:系統(tǒng)可用內(nèi)存數(shù)(以千字節(jié)為單位),如果剩余內(nèi)存不足,也會導致系統(tǒng)性能問題。下文介紹到的free命令,可以更詳細的了解系統(tǒng)內(nèi)存的使用情況。

  si, so:交換區(qū)寫入和讀取的數(shù)量。如果這個數(shù)據(jù)不為0,說明系統(tǒng)已經(jīng)在使用交換區(qū)(swap),機器物理內(nèi)存已經(jīng)不足。

  us, sy, id, wa, st:這些都代表了CPU時間的消耗,它們分別表示用戶時間(user)、系統(tǒng)(內(nèi)核)時間(sys)、空閑時間(idle)、IO等待時間(wait)和被偷走的時間(stolen,一般被其他虛擬機消耗)。

  上述這些CPU時間,可以讓我們很快了解CPU是否出于繁忙狀態(tài)。一般情況下,如果用戶時間和系統(tǒng)時間相加非常大,CPU出于忙于執(zhí)行指令。如果IO等待時間很長,那么系統(tǒng)的瓶頸可能在磁盤IO。

  示例命令的輸出可以看見,大量CPU時間消耗在用戶態(tài),也就是用戶應(yīng)用程序消耗了CPU時間。這不一定是性能問題,需要結(jié)合r隊列,一起分析。

  mpstat-P ALL 1

$ mpstat -P ALL 1

Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015  _x86_64_ (32 CPU)

07:38:49 PM  CPU   %usr  %nice   %sys %iowait   %irq  %soft  %steal  %guest  %gnice  %idle

07:38:50 PM  all  98.47   0.00   0.75    0.00   0.00   0.00    0.00    0.00    0.00   0.78

07:38:50 PM    0  96.04   0.00   2.97    0.00   0.00   0.00    0.00    0.00    0.00   0.99

07:38:50 PM    1  97.00   0.00   1.00    0.00   0.00   0.00    0.00    0.00    0.00   2.00

07:38:50 PM    2  98.00   0.00   1.00    0.00   0.00   0.00    0.00    0.00    0.00   1.00

07:38:50 PM    3  96.97   0.00   0.00    0.00   0.00   0.00    0.00    0.00    0.00   3.03

[...]

  該命令可以顯示每個CPU的占用情況,如果有一個CPU占用率特別高,那么有可能是一個單線程應(yīng)用程序引起的。

  pidstat 1

$ pidstat 1

Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015    _x86_64_    (32 CPU)

07:41:02 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command

07:41:03 PM     0         9    0.00    0.94    0.00    0.94     1  rcuos/0

07:41:03 PM     0      4214    5.66    5.66    0.00   11.32    15  mesos-slave

07:41:03 PM     0      4354    0.94    0.94    0.00    1.89     8  java

07:41:03 PM     0      6521 1596.23    1.89    0.00 1598.11    27  java

07:41:03 PM     0      6564 1571.70    7.55    0.00 1579.25    28  java

07:41:03 PM 60004     60154    0.94    4.72    0.00    5.66     9  pidstat

07:41:03 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command

07:41:04 PM     0      4214    6.00    2.00    0.00    8.00    15  mesos-slave

07:41:04 PM     0      6521 1590.00    1.00    0.00 1591.00    27  java07:41:04 PM     0      6564 1573.00   10.00    0.00 1583.00    28  java

07:41:04 PM   108      6718    1.00    0.00    0.00    1.00     0  snmp-pass

07:41:04 PM 60004     60154    1.00    4.00    0.00    5.00     9  pidstat

  pidstat命令輸出進程的CPU占用率,該命令會持續(xù)輸出,并且不會覆蓋之前的數(shù)據(jù),可以方便觀察系統(tǒng)動態(tài)。如上的輸出,可以看見兩個JAVA進程占用了將近1600%的CPU時間,既消耗了大約16個CPU核心的運算資源。

  iostat-xz 1

$ iostat -xz 1

Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015  _x86_64_ (32 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

          73.96    0.00    3.73    0.03    0.06   22.21

Device:   rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util

xvda        0.00     0.23    0.21    0.18     4.52     2.08    34.37     0.00    9.98   13.80    5.42   2.44   0.09

xvdb        0.01     0.00    1.02    8.94   127.97   598.53   145.79     0.00    0.43    1.78    0.28   0.25   0.25

xvdc        0.01     0.00    1.02    8.86   127.79   595.94   146.50     0.00    0.45    1.82    0.30   0.27   0.26

dm-0        0.00     0.00    0.69    2.32    10.47    31.69    28.01     0.01    3.23    0.71    3.98   0.13   0.04

dm-1        0.00     0.00    0.00    0.94     0.01     3.78     8.00     0.33  345.84    0.04  346.81   0.01   0.00

dm-2        0.00     0.00    0.09    0.07     1.35     0.36    22.50     0.00    2.55    0.23    5.62   1.78   0.03

  iostat命令主要用于查看機器磁盤IO情況。該命令輸出的列,主要含義是:

  r/s, w/s, rkB/s, wkB/s:分別表示每秒讀寫次數(shù)和每秒讀寫數(shù)據(jù)量(千字節(jié))。讀寫量過大,可能會引起性能問題。

  await:IO操作的平均等待時間,單位是毫秒。這是應(yīng)用程序在和磁盤交互時,需要消耗的時間,包括IO等待和實際操作的耗時。如果這個數(shù)值過大,可能是硬件設(shè)備遇到了瓶頸或者出現(xiàn)故障。

  avgqu-sz:向設(shè)備發(fā)出的請求平均數(shù)量。如果這個數(shù)值大于1,可能是硬件設(shè)備已經(jīng)飽和(部分前端硬件設(shè)備支持并行寫入)。

  %util:設(shè)備利用率。這個數(shù)值表示設(shè)備的繁忙程度,經(jīng)驗值是如果超過60,可能會影響IO性能(可以參照IO操作平均等待時間)。如果到達100%,說明硬件設(shè)備已經(jīng)飽和。

  -如果顯示的是邏輯設(shè)備的數(shù)據(jù),那么設(shè)備利用率不代表后端實際的硬件設(shè)備已經(jīng)飽和。值得注意的是,即使IO性能不理想,也不一定意味這應(yīng)用程序性能會不好,可以利用諸如預讀取、寫緩存等策略提升應(yīng)用性能。

  free -m

45

  free命令可以查看系統(tǒng)內(nèi)存的使用情況,-m參數(shù)表示按照兆字節(jié)展示。最后兩列分別表示用于IO緩存的內(nèi)存數(shù),和用于文件系統(tǒng)頁緩存的內(nèi)存數(shù)。需要注意的是,第二行-/+ buffers/cache,看上去緩存占用了大量內(nèi)存空間。這是Linux系統(tǒng)的內(nèi)存使用策略,盡可能的利用內(nèi)存,如果應(yīng)用程序需要內(nèi)存,這部分內(nèi)存會立即被回收并分配給應(yīng)用程序。因此,這部分內(nèi)存一般也被當成是可用內(nèi)存。

  如果可用內(nèi)存非常少,系統(tǒng)可能會動用交換區(qū)(如果配置了的話),這樣會增加IO開銷(可以在iostat命令中提現(xiàn)),降低系統(tǒng)性能。

  sar -n DEV 1

$ sar -n DEV 1

Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015     _x86_64_    (32 CPU)

12:16:48 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil

12:16:49 AM      eth0  18763.00   5032.00  20686.42    478.30      0.00      0.00      0.00      0.00

12:16:49 AM        lo     14.00     14.00      1.36      1.36      0.00      0.00      0.00      0.00

12:16:49 AM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

12:16:49 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil

12:16:50 AM      eth0  19763.00   5101.00  21999.10    482.56      0.00      0.00      0.00      0.00

12:16:50 AM        lo     20.00     20.00      3.25      3.25      0.00      0.00      0.00      0.00

12:16:50 AM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

  sar命令在這里可以查看網(wǎng)絡(luò)設(shè)備的吞吐率。在排查性能問題時,可以通過網(wǎng)絡(luò)設(shè)備的吞吐量,判斷網(wǎng)絡(luò)設(shè)備是否已經(jīng)飽和。如示例輸出中,eth0網(wǎng)卡設(shè)備,吞吐率大概在22 Mbytes/s,既176 Mbits/sec,沒有達到1Gbit/sec的硬件上限。

  sar -n TCP,ETCP 1

46

  sar命令在這里用于查看TCP連接狀態(tài),其中包括:

  active/s:每秒本地發(fā)起的TCP連接數(shù),既通過connect調(diào)用創(chuàng)建的TCP連接;

  passive/s:每秒遠程發(fā)起的TCP連接數(shù),即通過accept調(diào)用創(chuàng)建的TCP連接;

  retrans/s:每秒TCP重傳數(shù)量;

  TCP連接數(shù)可以用來判斷性能問題是否由于建立了過多的連接,進一步可以判斷是主動發(fā)起的連接,還是被動接受的連接。TCP重傳可能是因為網(wǎng)絡(luò)環(huán)境惡劣,或者服務(wù)器壓力過大導致丟包。

  top

$ top

top - 00:15:40 up 21:56,  1 user,  load average: 31.09, 29.87, 29.92

Tasks: 871 total,   1 running, 868 sleeping,   0 stopped,   2 zombie

%Cpu(s): 96.8 us,  0.4 sy,  0.0 ni,  2.7 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st

KiB Mem:  25190241+total, 24921688 used, 22698073+free,    60448 buffers

KiB Swap:        0 total,        0 used,        0 free.   554208 cached Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND

 20248 root      20   0  0.227t 0.012t  18748 S  3090  5.2  29812:58 java

  4213 root      20   0 2722544  64640  44232 S  23.5  0.0 233:35.37 mesos-slave

 66128 titancl+  20   0   24344   2332   1172 R   1.0  0.0   0:00.07 top

  5235 root      20   0 38.227g 547004  49996 S   0.7  0.2   2:02.74 java

  4299 root      20   0 20.015g 2.682g  16836 S   0.3  1.1  33:14.42 java     1 root      20   0   33620   2920   1496 S   0.0  0.0   0:03.82 init

     2 root      20   0       0      0      0 S   0.0  0.0   0:00.02 kthreadd

     3 root      20   0       0      0      0 S   0.0  0.0   0:05.35 ksoftirqd/0

     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H

     6 root      20   0       0      0      0 S   0.0  0.0   0:06.94 kworker/u256:0

     8 root      20   0       0      0      0 S   0.0  0.0   2:38.05 rcu_sched

  top命令包含了前面好幾個命令的檢查的內(nèi)容。比如系統(tǒng)負載情況(uptime)、系統(tǒng)內(nèi)存使用情況(free)、系統(tǒng)CPU使用情況(vmstat)等。因此通過這個命令,可以相對全面的查看系統(tǒng)負載的來源。同時,top命令支持排序,可以按照不同的列排序,方便查找出諸如內(nèi)存占用最多的進程、CPU占用率最高的進程等。

  但是,top命令相對于前面一些命令,輸出是一個瞬間值,如果不持續(xù)盯著,可能會錯過一些線索。這時可能需要暫停top命令刷新,來記錄和比對數(shù)據(jù)。

  總結(jié)

  排查Linux服務(wù)器性能問題還有很多工具,上面介紹的一些命令,可以幫助我們快速的定位問題。例如前面的示例輸出,多個證據(jù)證明有JAVA進程占用了大量CPU資源,之后的性能調(diào)優(yōu)就可以針對應(yīng)用程序進行。更多關(guān)于“云計算培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業(yè)需求,更科學更嚴謹,每年培養(yǎng)泛IT人才近2萬人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
免費領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學 138****2860 剛剛成功領(lǐng)取
王同學 131****2015 剛剛成功領(lǐng)取
張同學 133****4652 剛剛成功領(lǐng)取
李同學 135****8607 剛剛成功領(lǐng)取
楊同學 132****5667 剛剛成功領(lǐng)取
岳同學 134****6652 剛剛成功領(lǐng)取
梁同學 157****2950 剛剛成功領(lǐng)取
劉同學 189****1015 剛剛成功領(lǐng)取
張同學 155****4678 剛剛成功領(lǐng)取
鄒同學 139****2907 剛剛成功領(lǐng)取
董同學 138****2867 剛剛成功領(lǐng)取
周同學 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
軟件定制開發(fā)中的敏捷開發(fā)是什么?

軟件定制開發(fā)中的敏捷開發(fā)是什么軟件定制開發(fā)中的敏捷開發(fā),從宏觀上看,是一個高度關(guān)注人員交互,持續(xù)開發(fā)與交付,接受需求變更并適應(yīng)環(huán)境變化...詳情>>

2023-10-14 13:24:57
什么是PlatformIo?

PlatformIO是什么PlatformIO是一個全面的物聯(lián)網(wǎng)開發(fā)平臺,它為眾多硬件平臺和開發(fā)環(huán)境提供了統(tǒng)一的工作流程,有效簡化了開發(fā)過程,并能兼容各種...詳情>>

2023-10-14 12:55:06
云快照與自動備份有什么區(qū)別?

1、定義和目標不同云快照的主要目標是提供一種快速恢復數(shù)據(jù)的方法,它只記錄在快照時間點后的數(shù)據(jù)變化,而不是所有的數(shù)據(jù)。自動備份的主要目標...詳情>>

2023-10-14 12:48:59
服務(wù)器為什么要用Linux?

服務(wù)器為什么要用Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,Linux在眾多選擇中脫穎而出。Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,有其獨特的優(yōu)勢和特點。包括其...詳情>>

2023-10-14 12:34:11
ORM解決的主要問題是什么?

ORM(對象關(guān)系映射)解決的主要問題是將關(guān)系數(shù)據(jù)庫與面向?qū)ο缶幊讨g的映射困境。在傳統(tǒng)的關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)以表格的形式存儲,而在面向?qū)ο?..詳情>>

2023-10-14 12:26:19
主站蜘蛛池模板: 精品卡一卡2卡三卡免费观看| 动漫小舞被吸乳羞羞漫画在线| 啊啊深一点| 在线视频一二三区2021不卡| yw在线观看成人免费| 中文字幕精品亚洲无线码二区| 欧美国产日韩久久mv| 羞羞视频在线播放| 亚洲乱码一二三四五六区| 欧美伦理影院| 再深一点灬舒服灬太大了| 热久久国产精品| 色噜噜狠狠色综合日日| 欧美婷婷六月丁香综合色| 午夜dy888| 色老太bbw| 妞干网手机视频| 性做久久久久免费观看| 国产痴汉系列| 中国speakingathome宾馆学生| 里番acg全彩本子| 亚洲国产高清美女在线观看| 日日干日日| 国产精品入口麻豆免费| 男人j进女人p一进一出视频| 国产卡一卡二卡3卡4乱码| 村上凉子丰满禁断五十路| 美女黄色录像| 国色天香社区高清在线观看| 国产精品毛片大码女人| 精品久久久久国产免费| 久久国产小视频| 日本老头变态xxxx| 国产v在线播放| 伊人动漫| 国产色综合久久无码有码| 久久99精品九九九久久婷婷| 夜来香电影完整版免费观看 | 日本动漫黄观看免费网站| www.米奇777.com| 亚洲国产日韩在线人成蜜芽|