1.硬件瓶頸
????? CPU、內(nèi)存珍德、磁盤I/O泣矛、網(wǎng)絡(luò)I/O旦棉、進程和線程
2. CPU評估:
????字段說明:
Procs(進程)
r: 運行和等待CPU時間片的進程數(shù),如果長期大于系統(tǒng)CPU的個數(shù)药薯,CPU遇到瓶頸绑洛,需要擴展CPU。
b: 等待資源的進程數(shù)童本,比如正在等待磁盤I/O真屯、網(wǎng)絡(luò)I/O等。
Memory(內(nèi)存)
swpd: 使用虛擬內(nèi)存大小穷娱,如果swpd的值不為0绑蔫,但是SI,SO的值長期為0泵额,這種情況不會影響系統(tǒng)性能配深。
free: 空閑物理內(nèi)存大小。
buff: 用作緩沖的內(nèi)存大小嫁盲。
cache: 用作緩存的內(nèi)存大小篓叶,如果cache的值大的時候,說明cache處的文件數(shù)多羞秤,如果頻繁訪問到的文件都能被cache處缸托,那么磁盤的讀IO bi會非常小。
Swap
si: 每秒從交換區(qū)寫到內(nèi)存的大小瘾蛋,由磁盤調(diào)入內(nèi)存俐镐。
so: 每秒寫入交換區(qū)的內(nèi)存大小,由內(nèi)存調(diào)入磁盤哺哼。
注意:內(nèi)存夠用的時候佩抹,這2個值都是0叼风,如果這2個值長期大于0時,系統(tǒng)性能會受到影響匹摇,磁盤IO和CPU資源都會被消耗咬扇。有些朋友看到空閑內(nèi)存(free)很少的或接近于0時,就認(rèn)為內(nèi)存不夠用了廊勃,不能光看這一點懈贺,還要結(jié)合si和so,如果free很少坡垫,但是si和so也很少(大多時候是0)梭灿,那么不用擔(dān)心,系統(tǒng)性能這時不會受到影響的冰悠。
IO(現(xiàn)在的Linux版本塊的大小為1kb)
bi: 每秒讀取的塊數(shù)
bo: 每秒寫入的塊數(shù)
注意:隨機磁盤讀寫的時候堡妒,這2個值越大(如超出1024k),能看到CPU在IO等待的值也會越大溉卓。
system(系統(tǒng))
in: 每秒中斷數(shù)皮迟,包括時鐘中斷。
cs: 每秒上下文切換數(shù)桑寨。
注意:上面2個值越大伏尼,會看到由內(nèi)核消耗的CPU時間會越大。
CPU(以百分比表示)
us: 用戶進程執(zhí)行時間百分比(usertime)
us的值比較高時尉尾,說明用戶進程消耗的CPU時間多爆阶,但是如果長期超50%的使用,那么我們就該考慮優(yōu)化程序算法或者進行加速沙咏。
sy: 內(nèi)核系統(tǒng)進程執(zhí)行時間百分比(system time)
sy的值高時辨图,說明系統(tǒng)內(nèi)核消耗的CPU資源多,這并不是良性表現(xiàn)肢藐,我們應(yīng)該檢查原因故河。
us + sy參考值為80%,如果us + sy大于80%窖壕,說明可能存在CPU不足
wa: IO等待時間百分比
wa的值高時忧勿,說明IO等待比較嚴(yán)重,這可能由于磁盤大量作隨機訪問造成瞻讽,也有可能磁盤出現(xiàn)瓶頸(塊操作)鸳吸。
id: 空閑時間百分比
3. 內(nèi)存評估:
????[root@PV-portal01 ~]# free -m
total? ? ? used? ? ? free? ? shared? ? buffers? ? cached
Mem:? ? ? ? ? 8000? ? ? 7864? ? ? ? 136? ? ? ? ? 0? ? ? ? 30? ? ? 4033
-/+ buffers/cache:? ? ? 3800? ? ? 4200
Swap:? ? ? ? 12191? ? ? 4991? ? ? 7200
? 應(yīng)用程序可用內(nèi)存數(shù)量: 程序可用? free + cached
– 經(jīng)驗值
應(yīng)用程序可用內(nèi)存/系統(tǒng)物理內(nèi)存 > 70% 內(nèi)存充足
應(yīng)用程序可用內(nèi)存/系統(tǒng)物理內(nèi)存<20% 內(nèi)存不足,需要增加內(nèi)存
20%<應(yīng)用程序可用內(nèi)存/系統(tǒng)物理內(nèi)存<70%內(nèi)存基本夠用
4. 磁盤評估:
????iostat -d -k 1 10? ? ? ? #查看TPS和吞吐量信息
????iostat -d -x -k 1 10? ? ? #查看設(shè)備使用率(%util)速勇、響應(yīng)時間(await)
????iostat -c 1 10? ? ? ? ? ? #查看cpu狀態(tài)
[root@localhost ~]#? iostat -d -x -k 1
rkB/s每秒讀取數(shù)據(jù)量kB;
wkB/s每秒寫入數(shù)據(jù)量kB;
svctm I/O請求的平均服務(wù)時間晌砾,單位毫秒;
await I/O請求的平均等待時間,單位毫秒;值越小烦磁,性能越好;
util 一秒中有百分幾的時間用于I/O操作养匈。接近100%時哼勇,表示磁盤帶寬跑滿,需 要優(yōu)化程序或者增加磁盤;
rkB/s呕乎、wkB/s根據(jù)系統(tǒng)應(yīng)用不同會有不同的值积担,但有規(guī)律遵循:長期、超大數(shù) 據(jù)讀寫猬仁,肯定不正常帝璧,需要優(yōu)化程序讀取。
svctm的值與await的值很接近湿刽,表示幾乎沒有I/O等待的烁,磁盤性能好,如果await 的值遠(yuǎn)高于svctm的值诈闺,則表示I/O隊列等待太長渴庆,需要優(yōu)化程序或更換更快磁 盤。
tps:該設(shè)備每秒的傳輸次數(shù)(Indicate the number of transfers per second that were issued to the device.)雅镊〗罄祝“一次傳輸”意思是“一次I/O請求”。多個邏輯請求可能會被合并為“一次I/O請求”仁烹∴途“一次傳輸”請求的大小是未知的。
kB_read/s:每秒從設(shè)備(drive expressed)讀取的數(shù)據(jù)量晃危;
kB_wrtn/s:每秒向設(shè)備(drive expressed)寫入的數(shù)據(jù)量僚饭;
kB_read:讀取的總數(shù)據(jù)量尉间;
kB_wrtn:寫入的總數(shù)量數(shù)據(jù)量;這些單位都為Kilobytes。上面的例子中霍弹,我們可以看到磁盤sda以及它的各個分區(qū)的統(tǒng)計數(shù)據(jù)岛宦,下面是各個分區(qū)的TPS私恬。(因為是瞬間值,所以總TPS并不嚴(yán)格等于各個分區(qū)TPS的總和)
4.1 根據(jù)device找到具體的分區(qū)和目錄
????1.查找dm-N對應(yīng)的掛載點?
顯示dev253-0,dev253-1,即主設(shè)備號為dev253(sda設(shè)備號為dev8,這是linux為設(shè)備生成的內(nèi)部設(shè)備號),次設(shè)備號為0,1?
????2.查看/dev/dm-N涮瞻,以及映射
即 dm-0對應(yīng)? rhel-root窒升, dm-1對應(yīng) rhel-swap
????3.查看磁盤狀況
????4.查看目錄狀況
可以看出來dm-0 對應(yīng)的就是目錄 /, dm-1 對應(yīng)swap分區(qū)
5. 網(wǎng)絡(luò)評估:
????5.1 ifstat
RX Pkts/Rate ?數(shù)據(jù)包接收流量(包的數(shù)量 每秒)
RX Errs/Drop ?丟包
TX Pkts/Rate ?數(shù)據(jù)包發(fā)送流量?
RX Data/Rate 數(shù)據(jù)接收流量 (字節(jié)數(shù) 每秒)
TX Data/Rate 數(shù)據(jù)發(fā)送流量
????5.2 iftop
1. yum -y install iftop
2. iftop -i ens192
第一行:寬帶顯示
中間部分:外部連接列表,即記錄了哪些ip正在和本機的網(wǎng)絡(luò)連接
中間部分右邊:實時參數(shù)分別是該讓問ip連接到本機2,10屉凯,40秒的平均流量
=>代表發(fā)送數(shù)據(jù)堂飞;<=代表接收數(shù)據(jù)
底部三行:代表發(fā)送,收到和全部網(wǎng)絡(luò)流量
cum:為運行iftop到目前的總流量
peak:流量峰值
rates:2s骏庸,10s,40s的平均流量
3.使用幫助:
iftop -h????顯示幫助
iftop -F?? ?顯示指定網(wǎng)段/ip的進出流量
?????????????iftop -F 10.10.1.0/24
下面這些選項都可以的通過按鍵切換:
iftop -n????顯示本機的ip叮叹,不加-n則顯示主機名终蒂;也可以iftop進入監(jiān)控后睁蕾,按n切換是否顯示ip;
iftop -t????切換顯示格式為2行/1行/只顯示發(fā)送的流量/只顯示接收的流量
iftop -N????顯示端口號或端口服務(wù)名稱
iftop -S?? ?切換是否顯示本機的端口信息
iftop -D????切換是否顯示遠(yuǎn)端目標(biāo)主機的端口信息
iftop -P????顯示端口號子眶;或者進入iftop瀑凝,按p切換是否顯示端口信息
iftop -s????切換是否顯示遠(yuǎn)程目標(biāo)主機的host信息
iftop 按鍵切換顯示
按p:切換是否顯示端口信息
按P:切換暫停/繼續(xù)顯示
按T:切換是否顯示每個連接的總流量
按o:切換是否固定只顯示當(dāng)前的連接
按l:打開屏幕過濾功能,輸入要過濾的字符臭杰,比如ip粤咪,按回車后,就只能顯示這個ip相關(guān)的流量信息
????????實現(xiàn)iftop -F X.X.X.X/24的功能
按j或k:可以向上或下滾動屏幕顯示連接記錄
按b:切換是否顯示平均流量圖形條
按B:切換計算2渴杆,10寥枝,40秒內(nèi)的平均流量
按L:切換顯示畫面上邊的刻度,刻度不同磁奖,流量圖形條就會有變化
按1或2或3:可以根據(jù)右側(cè)顯示的三列流量數(shù)據(jù)進行排序
按<:根據(jù)左邊的本機名和ip排序
按>:根據(jù)遠(yuǎn)端目標(biāo)主機的主機名或ip排序
按f:編輯過濾代碼囊拜,很少用
按!:可以使用shell命令比搭,很少用
q:退出監(jiān)控
????5.3 vnstat
記錄指定網(wǎng)卡每日的傳輸流量日志冠跷。是通過分析文件系統(tǒng)/proc實現(xiàn)的,而非基于網(wǎng)絡(luò)包的過濾敢辩,所以nstat不需要root權(quán)限就可以使用蔽莱。
yum -y install vnstat
vnstatd -d 初始化
1. vnstat -i ens192 -h ?顯示每小時的流量統(tǒng)計,默認(rèn)eth0網(wǎng)卡戚长,需指定網(wǎng)卡
2. vnstat -l -i ens192 ?顯示實時網(wǎng)卡流量
6. 進程和線程:
????6.1 pidstat
cpu使用情況統(tǒng)計(-u)
內(nèi)存使用情況統(tǒng)計(-r)
IO情況統(tǒng)計(-d)
[root@sx-sj-dportal-nengli-1 ~]# jps
25126 Jps
16189 Bootstrap
--cpu查看
[root@sx-sj-dportal-nengli-1 ~]# pidstat -p 16189 -u 1 5-u 監(jiān)控cpu
以上輸出盗冷,除最開頭一行顯示內(nèi)核版本、主機名同廉、日期和cpu架構(gòu)外仪糖,主要列含義如下:
09:48:12: pidstat獲取信息時間點
PID:?進程pid
%usr:?進程在用戶態(tài)運行所占cpu時間比率
%system:?進程在內(nèi)核態(tài)運行所占cpu時間比率
%CPU:?進程運行所占cpu時間比率
CPU:?指示進程在哪個核運行
Command:?拉起進程對應(yīng)的命令
執(zhí)行pidstat默認(rèn)輸出信息為系統(tǒng)啟動后到執(zhí)行時間點的統(tǒng)計信息,因而即使當(dāng)前某進程的cpu占用率很高迫肖,輸出中的值有可能仍為0锅劝。
[root@sx-sj-dportal-nengli-1 ~]# pidstat -p 16189 -u 1 5 -t-t監(jiān)控進程中的線程
Linux 3.10.0-693.11.1.el7.x86_64 (sx-sj-dportal-nengli-1.novalocal) 05/22/2018 _x86_64_ (8 CPU)
09:49:31 PM? UID? ? ? TGID? ? ? TID? ? %usr %system? %guest? ? %CPU? CPU? Command
09:49:32 PM? ? 0? ? 16189? ? ? ? -? ? 0.00? ? 0.00? ? 0.00? ? 0.00? ? 0? java
09:49:32 PM? ? 0? ? ? ? -? ? 16189? ? 0.00? ? 0.00? ? 0.00? ? 0.00? ? 0? |__java
09:49:32 PM? ? 0? ? ? ? -? ? 16191? ? 0.00? ? 0.00? ? 0.00? ? 0.00? ? 1? |__java
09:49:32 PM? ? 0? ? ? ? -? ? 16192? ? 0.00? ? 0.00? ? 0.00? ? 0.00? ? 4? |__java
09:49:32 PM? ? 0? ? ? ? -? ? 16193? ? 0.00? ? 0.00? ? 0.00? ? 0.00? ? 0? |__java
-- 內(nèi)存查看
以上各列輸出的含義如下:
minflt/s:?每秒次缺頁錯誤次數(shù)(minor page faults),次缺頁錯誤次數(shù)意即虛擬內(nèi)存地址映射成物理內(nèi)存地址產(chǎn)生的page fault次數(shù)
majflt/s:?每秒主缺頁錯誤次數(shù)(major page faults)蟆湖,當(dāng)虛擬內(nèi)存地址映射成物理內(nèi)存地址時故爵,相應(yīng)的page在swap中,這樣的page fault為major page fault隅津,一般在內(nèi)存使用緊張時產(chǎn)生
VSZ:?該進程使用的虛擬內(nèi)存(以kB為單位)
RSS:?該進程使用的物理內(nèi)存(以kB為單位)
%MEM:?該進程使用內(nèi)存的百分比
Command:?拉起進程對應(yīng)的命令
--io查看
[root@mytest1 ~]# pidstat -p 18513? 1 1 -d -t
Linux 3.10.0-514.el7.x86_64 (mytest1) 2018年05月22日 _x86_64_ (8 CPU)
21時54分53秒? UID? ? ? TGID? ? ? TID? kB_rd/s? kB_wr/s kB_ccwr/s? Command
21時54分54秒? ? 0? ? 18513? ? ? ? -? ? ? 0.00? ? ? 3.96? ? ? 0.00? java
21時54分54秒? ? 0? ? ? ? -? ? 18513? ? ? 0.00? ? ? 0.00? ? ? 0.00? |__java
21時54分54秒? ? 0? ? ? ? -? ? 18514? ? ? 0.00? ? ? 0.00? ? ? 0.00? |__java
21時54分54秒? ? 0? ? ? ? -? ? 18515? ? ? 0.00? ? ? 0.00? ? ? 0.00? |__java
21時54分54秒? ? 0? ? ? ? -? ? 18516? ? ? 0.00? ? ? 0.00? ? ? 0.00? |__java
21時54分54秒? ? 0? ? ? ? -? ? 18517? ? ? 0.00? ? ? 0.00? ? ? 0.00? |__java
kB_rd/s:?每秒進程從磁盤讀取的數(shù)據(jù)量(以kB為單位)
kB_wr/s:?每秒進程向磁盤寫的數(shù)據(jù)量(以kB為單位)
Command:?拉起進程對應(yīng)的命令
7.系統(tǒng)負(fù)載
????7.1 top
[root@master ~]# top
top - 05:34:32 up 162 days,? 6:45,? 5 users,? load average: 0.02, 0.01, 0.00
Tasks: 244 total,? 1 running, 243 sleeping,? 0 stopped,? 0 zombie
Cpu(s):? 0.1%us,? 0.2%sy,? 0.0%ni, 99.6%id,? 0.0%wa,? 0.0%hi,? 0.0%si,? 0.0%st
Mem:? 16335704k total,? 7641236k used,? 8694468k free,? 232644k buffers
Swap:? 8241144k total,? ? ? ? 0k used,? 8241144k free,? 4891276k cached
????7.2 uptime
[root@master ~]# uptime
05:34:47 up 162 days,? 6:45,? 5 users,? load average: 0.02, 0.01, 0.00