Velocity 2015上的Netflix:Linux性能工具

現(xiàn)在有很多用于Linux的性能工具不恭,但它們是如何融合在一起的,我們什么時候使用它們德挣?在Velocity 2015上不撑,我給出了一個關(guān)于Linux性能工具的90分鐘教程臼勉。之前我已經(jīng)談過這個話題邻吭,但是考慮到90分鐘的時間段,我可以包含更多的方法宴霸,工具和現(xiàn)場演示囱晴,使其成為我所做主題的最完整的演示。視頻和幻燈片如下瓢谢。

第1部分(youtube)(54分鐘)畸写。

第2部分(youtube)(45分鐘)。

幻燈片(slideshare)氓扛。

在本教程中枯芬,我總結(jié)了傳統(tǒng)和高級性能工具,包括:top采郎,ps千所,vmstat,iostat蒜埋,mpstat淫痰,free,strace整份,tcpdump待错,netstat,nicstat烈评,pidstat火俄,swapon,lsof讲冠,sar烛占,ss,iptraf,iotop忆家,slaptop,pcstat 德迹,tiptop芽卿,rdmsr,lmbench胳搞,fio卸例,pchar,perf_events肌毅,ftrace筷转,SystemTap,ktap悬而,sysdig和eBPF;并參考更多呜舒。我還包括可觀察性,sar笨奠,基準(zhǔn)測試和調(diào)整(包括上面的圖像)的更新工具圖袭蝗。

本教程可以與廣泛的讀者共享 - 任何從事Linux系統(tǒng)工作的人 - 都可以作為免費(fèi)的Linux性能工具速成課程。我希望人們喜歡它并覺得它有用般婆。這是播放列表到腥。

在Netflix,我們有用于全云監(jiān)控的Atlas蔚袍,以及用于按需實例分析的Vector乡范。很多時候我們不需要直接登錄實例,但是當(dāng)我們這樣做時啤咽,本教程將介紹我們使用的工具晋辆。

您登錄到有性能問題的Linux服務(wù)器:您在第一分鐘檢查什么?

在Netflix闰蚕,我們擁有龐大的EC2 Linux云栈拖,以及眾多性能分析工具來監(jiān)控和調(diào)查其性能。 其中包括用于全云監(jiān)控的Atlas和用于按需實例分析的Vector没陡。 盡管這些工具可以幫助我們解決大多數(shù)問題涩哟,但我們有時需要登錄到實例并運(yùn)行一些標(biāo)準(zhǔn)的Linux性能工具。

前60秒:總結(jié)

在本文中盼玄,Netflix性能工程團(tuán)隊將使用標(biāo)準(zhǔn)的Linux工具向您展示在命令行中進(jìn)行優(yōu)化性能調(diào)查的前60秒贴彼。 在60秒內(nèi),您可以通過運(yùn)行以下十個命令埃儿,獲得系統(tǒng)資源使用情況和正在運(yùn)行的進(jìn)程的高級概念器仗。 查找錯誤和飽和度指標(biāo)(saturation metrics),因為它們都易于解釋,然后是資源利用率精钮。 飽和度(Saturation)是資源負(fù)載超過其處理能力的地方威鹿,并且可以作為請求隊列的長度或等待的時間暴露出來。

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軟件包轨香。 這些命令公開的指標(biāo)將幫助您完成一些USE方法:用于查找性能瓶頸的方法忽你。 這涉及檢查所有資源(CPU,內(nèi)存臂容,磁盤科雳,e.t.c)的利用率(utilization),飽和度(saturation)和錯誤度量(error metrics)標(biāo)準(zhǔn)脓杉。 同時要注意檢查并排除資源的時候糟秘,因為通過消除(elimination)這個過程縮小了研究對象的范圍,并且指導(dǎo)任何后續(xù)調(diào)查(follow on investigation)球散。

以下部分總結(jié)了這些命令尿赚,并以生產(chǎn)系統(tǒng)為例。 有關(guān)這些工具的更多信息沛婴,請參閱他們的手冊頁吼畏。

1. uptime

$ uptime 
23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.02

這是查看負(fù)載平均值的快速方法,它表示想要運(yùn)行的任務(wù)(進(jìn)程)的數(shù)量嘁灯。在Linux系統(tǒng)上泻蚊,這些數(shù)字包括想要在CPU上運(yùn)行的進(jìn)程以及在不可中斷的I / O(通常是磁盤I / O)中被阻塞的進(jìn)程。這提供了資源負(fù)載(或需求)的高級概念丑婿,但是沒有其他工具就無法正確理解性雄。值得快速瀏覽一下。

這三個數(shù)字是指數(shù)衰減移動總和平均值(exponentially damped moving sum averages)在1分鐘羹奉,5分鐘和15分鐘的常數(shù)秒旋。這三個數(shù)字讓我們了解負(fù)載如何隨時間而變化。例如诀拭,如果您被要求檢查問題服務(wù)器迁筛,并且1分鐘的值比15分鐘的值低得多,那么您可能已經(jīng)登錄太晚而錯過了該問題耕挨。

在上面的例子中细卧,負(fù)載平均值顯示最近的增加,1分鐘的值為30筒占,而15分鐘的值為19贪庙。數(shù)字這么大意味著很多東西:可能是CPU需求; vmstat或mpstat將會確認(rèn),這是本序列命令3和命令4翰苫。

2. 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.

這可以查看最后10個系統(tǒng)消息止邮,如果有的話这橙。 尋找可能導(dǎo)致性能問題的錯誤。 上面的例子包含了殺手锏导披,TCP丟棄了一個請求屈扎。

不要錯過這一步! dmesg總是值得檢查撩匕。

3. 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
^C

虛擬內(nèi)存統(tǒng)計數(shù)據(jù)的簡稱助隧,vmstat(8)是一種常用的工具(幾十年前首次為BSD創(chuàng)建)。它在每行上打印關(guān)鍵服務(wù)器統(tǒng)計信息的摘要滑沧。

vmstat運(yùn)行的參數(shù)為1,打印一秒摘要巍实。第一行輸出(在此版本的vmstat中)有一些列顯示引導(dǎo)后的平均值滓技,而不是前一秒。現(xiàn)在棚潦,跳過第一行令漂,除非你想學(xué)習(xí)和記住哪一列是哪一列。

要檢查的列:

r:在CPU上運(yùn)行并等待輪換的進(jìn)程數(shù)量丸边。這比確定CPU飽和度的負(fù)載平均值提供了更好的信號叠必,因為它不包含I / O∶媒眩可以這么理解:大于CPU計數(shù)的“r”值就意味著飽和(saturation)纬朝。

free:以千字節(jié)為單位的可用內(nèi)存。如果要計數(shù)的位數(shù)太多骄呼,則有足夠的空閑內(nèi)存共苛。包含在命令7中的“free -m”命令更好地解釋了可用內(nèi)存的狀態(tài)。

si蜓萄,so:交換和換出隅茎。如果這些不是零,則表示內(nèi)存不足嫉沽。

us辟犀,syid绸硕,wa堂竟,st:這些是所有CPU平均CPU時間的細(xì)分。它們是用戶時間(user time)臣咖,系統(tǒng)時間( system time)(內(nèi)核)跃捣,空閑(idle),等待I / O(wait I/O)和被盜時間(stolen time)(由其他客人夺蛇,或者對于Xen而言疚漆,客戶自己的隔離驅(qū)動程序域(isolated driver domain))。

CPU時間細(xì)分將通過將用戶+系統(tǒng)時間加和來確認(rèn)CPU是否繁忙。等待I / O的持續(xù)程度指向磁盤瓶頸;這是CPU空閑的地方娶聘,因為任務(wù)被阻塞等待掛起的磁盤I / O闻镶。您可以將等待I / O視為另一種形式的CPU閑置,這樣可以為他們?yōu)槭裁撮e置提供線索丸升。

系統(tǒng)時間對于I / O處理是必需的铆农。高系統(tǒng)時間的平均值超過20%可能會讓人感興趣進(jìn)一步探索:內(nèi)核可能無效處理I / O。

在上面的例子中狡耻,CPU時間幾乎全部在用戶級別墩剖,而是指向應(yīng)用程序級別的使用。 CPU的平均使用率也超過90%夷狰。這不一定是個問題;使用“r”列檢查飽和度岭皂。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市沼头,隨后出現(xiàn)的幾起案子爷绘,更是在濱河造成了極大的恐慌,老刑警劉巖进倍,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件土至,死亡現(xiàn)場離奇詭異,居然都是意外死亡猾昆,警方通過查閱死者的電腦和手機(jī)陶因,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毡庆,“玉大人坑赡,你說我怎么就攤上這事∶纯梗” “怎么了毅否?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蝇刀。 經(jīng)常有香客問我螟加,道長,這世上最難降的妖魔是什么吞琐? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任捆探,我火速辦了婚禮,結(jié)果婚禮上站粟,老公的妹妹穿的比我還像新娘黍图。我一直安慰自己,他們只是感情好奴烙,可當(dāng)我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布助被。 她就那樣靜靜地躺著剖张,像睡著了一般。 火紅的嫁衣襯著肌膚如雪揩环。 梳的紋絲不亂的頭發(fā)上搔弄,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天,我揣著相機(jī)與錄音丰滑,去河邊找鬼顾犹。 笑死,一個胖子當(dāng)著我的面吹牛褒墨,可吹牛的內(nèi)容都是我干的炫刷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼郁妈,長吁一口氣:“原來是場噩夢啊……” “哼柬唯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起圃庭,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎失晴,沒想到半個月后剧腻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡涂屁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年书在,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拆又。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡儒旬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帖族,到底是詐尸還是另有隱情栈源,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布竖般,位于F島的核電站甚垦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏涣雕。R本人自食惡果不足惜艰亮,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望挣郭。 院中可真熱鬧迄埃,春花似錦、人聲如沸兑障。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至彩库,卻和暖如春肤无,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背骇钦。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工宛渐, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人眯搭。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓窥翩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鳞仙。 傳聞我的和親對象是個殘疾皇子寇蚊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容