作為程序員,和 Linux 打交道,在服務(wù)器上分析系統(tǒng)性能情況,是每一個(gè)后端工程師都無法避開的事情。
無論你是開發(fā)還是運(yùn)維,可能都經(jīng)歷過這樣的場景:
流量高峰期,服務(wù)器 CPU 使用率過高報(bào)警,你登錄 Linux 上去 top 完之后,卻不知道怎么進(jìn)一步定位,到底是系統(tǒng) CPU 資源太少,還是程序并發(fā)部分寫得有問題?
系統(tǒng)并沒有跑什么吃內(nèi)存的程序,但在敲完 free 命令之后,卻發(fā)現(xiàn)已經(jīng)沒什么內(nèi)存了,到底是哪里占用了內(nèi)存?為什么?
一大早就收到 Zabbix 告警,你發(fā)現(xiàn)某臺存放監(jiān)控?cái)?shù)據(jù)的數(shù)據(jù)庫主機(jī) CPU 的 I/O Wait 較高,該怎么辦?
Linux性能問題一直是程序員頭上的“緊箍咒”,大多數(shù)時(shí)候,我們只能看到“癥狀”,卻不知道從哪兒下手排查和解決。就算看了很多資料和書籍,一旦涉及到具體問題,還是會(huì)一臉懵逼。
談學(xué)習(xí)經(jīng)驗(yàn),有 3 點(diǎn)比較重要:
先掌握性能優(yōu)化的思路和方法,嘗試大量 Linux 性能工具;
把性能問題跟系統(tǒng)原理關(guān)聯(lián)起來,特別是把應(yīng)用程序、庫函數(shù)、系統(tǒng)調(diào)用、內(nèi)核和硬件等不同的層級貫穿起來;
最終從學(xué)習(xí)到輸出,從實(shí)踐中總結(jié)經(jīng)驗(yàn)。
這其中,一開始就勸退你的,可能就是 Linux 性能工具的使用,它除了要考慮性能指標(biāo)的目的外,還要結(jié)合待分析的環(huán)境來綜合選取。
雖說咱有布倫丹·格雷格(Brendan Gregg)大師整理的性能工具圖譜,相信你也多少參考過,但其實(shí)它還不夠具體,使用時(shí)還要去查找每個(gè)工具的手冊,對比分析做出選擇。
所以每次用的時(shí)候,大家都會(huì)想,有沒有更好的方法來理解這些工具呢?相信當(dāng)你看了倪朋飛《Linux 性能優(yōu)化實(shí)戰(zhàn)》中總結(jié)的幾個(gè)性能工具圖,一定會(huì)解決你的問題的。
他根據(jù)「性能指標(biāo)」的不同,將工具劃分為CPU、內(nèi)存、磁盤 I / O及網(wǎng)絡(luò),4 大類型,會(huì)讓你一次性把性能工具搞明白了。
看這些圖,就很清晰了,比如,當(dāng)遇到 I/O 性能問題時(shí),可以根據(jù)不同的性能指標(biāo),使用 iostat、iotop、blktrace 等工具分析磁盤 I/O 的瓶頸。
-
cpu
+關(guān)注
關(guān)注
68文章
11076瀏覽量
217008 -
Linux
+關(guān)注
關(guān)注
87文章
11509瀏覽量
213720 -
程序員
+關(guān)注
關(guān)注
4文章
954瀏覽量
30402
原文標(biāo)題:Linux 性能問題難點(diǎn)解析(內(nèi)附 4 套圖譜)
文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
在ADS1278上電后,SCLK沒給波型(一直是高電平),為什么DOUT會(huì)一直出來波形?
用DSP28335外部接口與DAC7724通信,程序測試一直不對,輸出的值一直是-10V,為什么?
ADS1274的DRDY一直是高電平,為什么?
ADS1198在START=1命令發(fā)出之前,DADY一直是1,為什么?
ads1256EVM drdy引腳一直是高的,不能拉低,為什么?
ldc1000與mcu能正常通訊,傳回來的值一直是0,為什么?
ads1220 DRDY信號一直是高,怎么解決?
ADS1672轉(zhuǎn)換輸出,DRDY管腳一直是高電平,為什么?
AFE4490電路板讀寫寄存器的值一直是0x00,為什么?怎么解決?
機(jī)械革命發(fā)布CODE AI程序員本
Linux驅(qū)動(dòng)程序程序員指南

評論