您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關CentOS服務程序性能評估文檔的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
1概述
1.1影響Linux服務程序性能的因素
CPU、內存、磁盤I/O帶寬、網絡I/O帶寬
1.2性能評判
CPU:user% + sys%< 70%; 程序在用戶態和內核態的執行時間百分比。
內存:Swap In(si)=0; Swap Out(so)=0; 以不使用交換分區為準,如果頻繁用到交換分區,內存可能不夠了。
硬盤:iowait % < 20%;
網絡:只要有足夠帶寬盡情的使用吧,達到網卡帶寬linux系統表示毫無壓力
其中: %user:表示CPU處在用戶模式下的時間百分比。
%sys:表示CPU處在內核模式下的時間百分比。
%iowait:表示CPU等待輸入輸出完成時間的百分比。
swap in:即si,表示虛擬內存的頁導入,即從SWAP DISK交換到RAM
swap out:即so,表示虛擬內存的頁導出,即從RAM交換到SWAP DISK。
1.3性能分析工具
常用系統命令:top、free、ps、uptime、iotop、vmstat、iostat 、dstat、sar。
使用方法:top命令把握全局,使用特定命令深入分析
常用組合方式:
(1)CPU瓶頸:top、vmstat、iostat、sar –u、sar -q
(2)內存瓶頸:free、vmstat、sar -B、sar –r、sar -W
(3)磁盤I/O瓶頸:iotop、iostat、sar -b、sar –u、sar -d
(4)網絡瓶頸: dstat
2 top
2.1功能
提供了實時的對系統處理器、內存、任務等狀態監視;該命令可以按CPU使用、內存使用對任務進行排序;TOP是一個動態顯示過程,可以通過用戶按鍵來不斷刷新當前狀態,也可以在啟動時指定刷新間隔。
2.2命令輸出示意圖
top - 10:16:29 up 38 days, 15:48, 5 users, load average: 0.04, 0.10, 0.05
Tasks: 569 total, 2 running, 562 sleeping, 0 stopped, 5 zombie
Cpu(s): 2.6%us, 1.3%sy, 0.4%ni, 95.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3839112k total, 3151560k used, 687552k free, 302944k buffers
Swap: 6078456k total, 631852k used, 5446604k free, 348548k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10603 zhixiang 20 0 1225m 284m 30m S 4.6 7.6 271:48.24 vs_exe
2473 xulun 20 0 118m 43m 6932 S 3.0 1.2 964:14.99 Xvnc
1412 xulun 30 10 232m 12m 5216 S 2.3 0.3 0:04.59 floaters
14823 chujie 20 0 1112m 247m 17m S 2.0 6.6 363:51.38 vs_exe
17772 sihao 20 0 1101m 202m 10m S 1.7 5.4 631:21.17 vs_exe
11054 sihao 20 0 906m 65m 9412 S 1.0 1.7 410:06.55 vs_exe
20782 yongtao 20 0 1049m 173m 9996 S 1.0 4.6 196:05.10 vs_exe
14637 chujie 20 0 1274m 132m 2388 S 0.7 3.5 63:20.18 KugooPopMsgServ
1439 yanyun 20 0 15428 1600 940 R 0.3 0.0 0:00.01 top
3491 zhixiang 20 0 129m 55m 17m S 0.3 1.5 10:57.25 Xvnc
1 root 20 0 19344 1200 984 S 0.0 0.0 0:00.89 init
2.3命令輸出解析
Top輸出的信息很多基本囊括了所有的性能指標,前五行是統計信息區,表示的是系統整體的統計信息,包括:系統負載、任務、CPU、內存等;后面的是每個進程相關信息。
第一行是任務隊列信息,同uptime命令的執行結果是一樣的
[yanyun@~/test]$ uptime
10:20:17 up 38 days, 15:52, 5 users, load average: 0.00, 0.04, 0.03
其內容如下:10:20:17:當前時間
38 days, 15:52:系統運行時間
5 users:當前登錄用戶數
load average: 0.00, 0.04, 0.03:系統負載,即任務隊列的平均長度。三個數值分別為 1分鐘、5分鐘、15分鐘前到現在的平均值。
第二行為進程的信息
內容如下:569 total:進程總數
2 running,:正在運行的進程數
562 sleeping:睡眠的進程數
0 stopped:停止的進程數
5 zombie:僵尸進程數
第三行為CPU的信息
內容如下:2.6%us:用戶空間占用CPU百分比
1.3%sy:內核空間占用CPU百分比
0.4%ni:用戶進程空間內改變過優先級的進程占用CPU百分比
95.7%id:空閑CPU百分比
0.0%wa:等待輸入輸出的CPU時間百分比
第四、五行為內存信息;命令輸出跟free相同
[yanyun@~]$ free
total used free shared buffers cached
Mem: 3839112 3256976 582136 0 143664 444992
-/+ buffers/cache: 2668320 1170792
Swap: 6078456 574772 5503684
內容如下:Mem :3839112k total:物理內存總量
3151560k used:使用的物理內存總量
687552k free:空閑內存總量
302944k buffers:用作緩沖的內存量
Swap: 6078456k total:交換區總量
631852k used:使用的交換區總量
5446604k free:空閑交換區總量
348548k cached:緩存總量。
注:buffer:可以認為是寫出磁盤的緩沖區;
Cache:讀出磁盤的緩存。
Linux系統使用內存的原則是:不用白不用,用了也白用;盡可能的緩存東西,所以往往看空閑內存很小,但是cache很大;Linux系統會定時啟動內核線程kswapd進行緩存回收。
后面的是顯示每個進程相關信息
%CPU:上次更新到現在的CPU時間占用百分比
TIME+:進程使用的CPU時間總計
%MEM:進程使用的物理內存百分比
VIRT:進程使用的虛擬內存總量,單位kb
RES:進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
SHR:共享內存大小,單位kb
S:進程狀態。(D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵尸進程)
2.4常用選項
top [-] [d][p][M][P]
參數說明:
d:指定每兩次屏幕信息刷新之間的時間間隔。(top –d 1:每秒刷新一次)
p:指定進程ID來僅監控某個進程。(top –d 1234:只查看pid為1234的進程信息)
k:終止一個進程。Top運行時參數,系統將提示用戶輸入需要終止的進程PID,以及需要發送給該進程什么樣的信號。使用信號9強制結束該進程。
M:根據駐留內存大小進行排序。
P:根據CPU使用百分比大小進行排序。
注:在命令行執行過程中按下數字鍵‘1’,可以查看到CPU每個核的相關信息。
Tasks: 564 total, 3 running, 556 sleeping, 0 stopped, 5 zombie
Cpu0 : 2.9%us, 2.9%sy, 0.0%ni, 94.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 2.0%us, 2.0%sy, 0.0%ni, 96.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3839112k total, 3445296k used, 393816k free, 48180k buffers
Swap: 6078456k total, 553876k used, 5524580k free, 976128k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14823 chujie 20 0 1112m 245m 16m R 3.0 6.5 373:07.82 vs_exe
5589 sihao 20 0 1019m 267m 29m R 2.0 7.1 2:24.80 vs_exe
5674 zhixiang 20 0 1103m 253m 37m S 2.0 6.8 4:17.89 vs_exe
3 iotop:
3.1功能
是一個用來監視每個線程的磁盤 I/O 使用狀況的類top 工具,
注:此命令需要自行安裝(yum install iotop)
3.2命令輸出示意圖
Total DISK READ: 50.23 M/s | Total DISK WRITE: 34.25 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
61524 be/4 root 47.65 M/s 0.00 B/s 0.00 % 37.83 % ./relay_server
61539 be/4 root 121.77 K/s 0.00 B/s 0.00 % 26.73 % ./relay_server
61544 be/4 root 700.15 K/s 0.00 B/s 0.00 % 24.89 % ./relay_server
61543 be/4 root 528.92 K/s 0.00 B/s 0.00 % 21.29 % ./relay_server
61541 be/4 root 494.67 K/s 0.00 B/s 0.00 % 21.22 % ./relay_server
61540 be/4 root 323.44 K/s 0.00 B/s 0.00 % 8.62 % ./relay_server
61542 be/4 root 468.04 K/s 0.00 B/s 0.00 % 8.13 % ./relay_server
480 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.02 % [jbd2/sda2-8]
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
3.3命令輸出解析
第一行:
Total DISK READ: 50.23 M/s :磁盤每秒讀出數據量
Total DISK WRITE: 34.25 K/s :磁盤每秒寫入數據量
下面的是每個線程的的IO情況:
比較簡單;只解釋一下IO:跟top的wa意義相同,只是此處表示的一個線程的wa。
3.4常用選項
iotop [-] [d] [p]
參數說明:
d:指定每兩次屏幕信息刷新之間的時間間隔。(iotop –d 1:每秒刷新一次)
p:指定線程ID來僅監控某個線程。(iotop –d 1234:只查看pid為1234的進程信息)
注:在命令行執行過程中按下字母‘o’,可以只查看有IO的線程。
pstree -p:查看進程樹,可以輸出進程之間的關系。
ps –eLf:查看線程。ps –ef的高級版
4 vmstat:
4.1功能
查看虛擬內存(Virtual Memory)使用狀況的工具
4.2命令輸出示意圖
[yanyun@~/test]$ vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 631376 834896 15108 452024 0 0 4 4 1 2 2 1 97 0 0
4.3命令輸出解析
Memory:同top的第四、五行信息。
swap:內存到swap分區換入換出速率。
io:讀寫磁盤速率
system in:每秒的中斷數,包括時鐘中斷
system cs:每秒的環境(上下文)切換數;頻繁切換對系統性能有影響,linux提供了線程對cpu的親和,可以將某個線程綁定到一個核運行。
cpu:同top輸出的第三行
注:swap項不為零,都用到交換分區了,內存可能已經用完已經成為系統瓶頸的一項。
4.4常用選項
vmstat 1 10:每秒刷新一次,總共刷新十次退出。
注:下面的選項都是專業的查看某一特定項的信息,有幾個輸出一大堆信息,用到時google吧!
-a:顯示活躍和非活躍內存
-f:顯示從系統啟動至今的fork數量
-m:顯示slabinfo
-s:顯示內存相關統計信息及多種系統活動數量。
-d:顯示磁盤相關統計信息。
-p:顯示指定磁盤分區統計信息
5 iostat
5.1功能
用于輸出CPU和磁盤I/O相關的統計信息
5.2輸出結果示意圖
[root@ShanWei_119_134_255_208 ~]# iostat -x
Linux 2.6.32-279.el6.x86_64 (ShanWei_119_134_255_208) 07/30/2013 _x86_64_ (16 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.63 0.00 2.25 5.98 0.00 89.14
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 195.42 163.72 194.33 126.28 28464.35 2319.94 96.02 1.16 3.63 1.41 45.30
sdb 0.33 48.97 122.71 2.70 29603.37 413.38 239.34 0.27 2.15 1.00 12.52
5.3命令輸出解釋
avg-cpu段:
%user: 在用戶級別運行所使用的CPU的百分比.
%nice: nice操作所使用的CPU的百分比.
%sys: 在系統級別(kernel)運行所使用CPU的百分比.
%iowait: CPU等待硬件I/O時,所占用CPU百分比.
%idle: CPU空閑時間的百分比.
Device段:
tps: 每秒鐘發送到的I/O請求數
Blk_read /s: 每秒讀取的block數
Blk_wrtn/s: 每秒寫入的block數
Blk_read: 讀入的block總數
Blk_wrtn: 寫入的block總數
-x選項可以查看到如下更多信息
rrqm/s:每秒這個設備相關的讀取請求有多少被Merge了
wrqm/s:每秒這個設備相關的寫入請求有多少被Merge了
rsec/s:每秒讀取的扇區數
wsec/:每秒寫入的扇區數
avgrq-sz: 平均每次設備I/O操作的數據大小 (扇區)
avgqu-sz: 平均I/O隊列長度
await:平均每次設備I/O操作的等待時間(單位是毫秒)
svctm: 平均每次設備I/O操作的服務時間 (單位是毫秒)
%util:在統計時間內所有處理IO時間,所以該參數暗示了設備的繁忙程度
5.4常用選項
iostat -d 2 6:每隔2秒,顯示一次設備統計信息.總共輸出6次.
-x:查看設備的使用率、響應時間
6 dstat
6.1功能
是一個全能系統信息統計工具,只能對整個系統進行監控而不能對某一個進程或某一個程序進行深入分析;監控項包括:cpu、磁盤、內存、網卡、進程、系統(彩色界面linux下面不多見啊!)
注:此命令需要自行安裝(yum install dstat)
6.2命令輸出示意圖
[root@ShanWei_119_134_255_208 ~]# dstat -cdlmnpy
----total-cpu-usage---- -dsk/total- ---load-avg--- ------memory-usage----- -net/total- ---procs--- ---system--
usr sys idl wai hiq siq| read writ| 1m 5m 15m | used buff cach free| recv send|run blk new| int csw
3 2 89 6 0 0| 28M 1367k|5.41 5.07 4.87|4019M 172M 58.5G 267M| 0 0 | 0 0.0 1.3|8608 35k
2 1 85 12 0 0| 21M 828k|5.41 5.07 4.87|4020M 172M 58.6G 243M| 191k 15M| 0 6.0 0|5711 18k
1 1 80 18 0 0|5828k 4804k|5.41 5.07 4.87|4018M 172M 58.6G 260M| 190k 17M|2.0 3.0 0|5802 12k
6.3命令輸出解釋
前面基本都解釋過了......
6.4常用選項
dstat –cdlmnpsy:cdlmnpsy這幾個選項基本囊括了常用的,當然還有很多dstat –-help一下吧。
7 sar
7.1功能
System Activity Reporter系統活動情況報告,是目前 Linux 上最為全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告,包括:文件的讀寫情況、系統調用的使用情況、磁盤I/O、CPU效率、內存使用狀況、進程活動及IPC有關的活動等。
7.2命令輸出示意圖
[root@localhost ~]# sar -r 1 100
Linux 2.6.32-220.el6.x86_64 (localhost.localdomain) 07/30/2013 _x86_64_ (8 CPU)
03:17:59 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
03:18:00 PM 4988488 3062224 38.04 639136 2115404 72404 0.44
03:18:01 PM 4984464 3066248 38.09 639136 2115404 98060 0.60
03:18:02 PM 4985152 3065560 38.08 639136 2115420 97972 0.60
03:18:03 PM 4985400 3065312 38.08 639136 2115420 97972 0.60
[root@localhost ~]# sar -B 1 100
Linux 2.6.32-220.el6.x86_64 (localhost.localdomain) 07/30/2013 _x86_64_ (8 CPU)
03:19:09 PM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
03:19:10 PM 0.00 157.14 45415.48 0.00 15541.67 0.00 0.00 0.00 0.00
03:19:11 PM 0.00 0.00 40.40 0.00 75.76 0.00 0.00 0.00 0.00
03:19:12 PM 0.00 0.00 5542.34 0.00 1584.68 0.00 0.00 0.00 0.00
[root@localhost ~]# sar -b 1 100
Linux 2.6.32-220.el6.x86_64 (localhost.localdomain) 07/30/2013 _x86_64_ (8 CPU)
03:19:38 PM tps rtps wtps bread/s bwrtn/s
03:19:39 PM 12.50 0.00 12.50 0.00 181.82
03:19:40 PM 0.00 0.00 0.00 0.00 0.00
03:19:41 PM 7.14 0.00 7.14 0.00 128.57
[root@localhost ~]# sar -W 1 100
Linux 2.6.32-220.el6.x86_64 (localhost.localdomain) 07/30/2013 _x86_64_ (8 CPU)
03:20:10 PM pswpin/s pswpout/s
03:20:11 PM 0.00 0.00
03:20:12 PM 0.00 0.00
03:20:13 PM 0.00 0.00
[root@localhost ~]# sar -d 1 100
Linux 2.6.32-220.el6.x86_64 (localhost.localdomain) 07/30/2013 _x86_64_ (8 CPU)
03:20:48 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
03:20:49 PM dev8-0 7.69 0.00 79.12 10.29 0.00 0.14 0.14 0.11
03:20:49 PM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
03:20:49 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
03:20:50 PM dev8-0 10.47 0.00 148.84 14.22 0.08 7.22 7.11 7.44
03:20:50 PM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
7.3命令輸出解釋
kbmemfree:這個值和free命令中的free值基本一致,所以它不包括buffer和cache的空間.
kbmemused:這個值和free命令中的used值基本一致,所以它包括buffer和cache的空間.
%memused:這個值是kbmemused和內存總量(不包括swap)的一個百分比.
kbbuffers和kbcached:這兩個值就是free命令中的buffer和cache.
kbcommit:保證當前系統所需要的內存,即為了確保不溢出而需要的內存(RAM+swap).
%commit:這個值是kbcommit與內存總量(包括swap)的一個百分比.
pgpgin/s:表示每秒從磁盤或SWAP置換到內存的字節數(KB)
pgpgout/s:表示每秒從內存置換到磁盤或SWAP的字節數(KB)
fault/s:每秒鐘系統產生的缺頁數,即主缺頁與次缺頁之和(major + minor)
majflt/s:每秒鐘產生的主缺頁數.
pgfree/s:每秒被放入空閑隊列中的頁個數
pgscank/s:每秒被kswapd掃描的頁個數
pgscand/s:每秒直接被掃描的頁個數
pgsteal/s:每秒鐘從cache中被清除來滿足內存需要的頁個數
%vmeff:每秒清除的頁(pgsteal)占總掃描頁(pgscank+pgscand)的百分比
tps:每秒鐘物理設備的 I/O傳輸總量
rtps:每秒鐘從物理設備讀入的數據總量
wtps:每秒鐘向物理設備寫入的數據總量
bread/s:每秒鐘從物理設備讀入的數據量,單位為塊/s
bwrtn/s:每秒鐘向物理設備寫入的數據量,單位為塊/s
pswpin/s:每秒系統換入的交換頁面(swap page)數量
pswpout/s:每秒系統換出的交換頁面(swap page)數量
7.4常用選項
sar –[u][r][B][b][q][W][d]
參數說明:
-u:CPU資源監控
-r:內存和交換空間監控
-B:內存分頁監控
-b:IO和傳輸速率監控
-q:進程隊列系統負載監控
-W:系統交換分區活動監控
-d:設備使用狀況監控
8 tmpfs
8.1定義
tmpfs文件系統是一種基于內存的文件系統,掛載在/dev/shm下面。
8.2特點
動態改變大小;訪問快、完全駐留在RAM中;當然系統重啟就沒了。
8.3使用方法
1、 linux下面POSIX標準的共享內存是基于此文件系統實現的(還有一套System V標準的共享內存實現方式);
2、 將文件創建在/dev/shm下面都將直接使用tmpfs;所以如果不需要考慮機器重啟后數據的丟失,把數據放在這下面吧,釋放你的磁盤壓力!
3、 tmpfs的默認大小是物理內存的一半。將最大容量調到40G,并且文件節點數量調到1000000,可以通過下面的命令:
mount -o size=40G -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm
4、如果需要永久修改tmpfs文件系統的大小,需要修改/etc/fstab
9 crontab:
9.1功能
定時調度一些命令的執行,相當于系統級別的定時器。在/var/spool/cron/有一些以用戶名命名的文件,表示的是這個用戶的定時執行任務。
9.2配置方法
格式說明:
* * * * * /command path
前五個字段可以取整數值,指定何時開始工作(分鐘 小時 日期 月份 星期),第六個域是字符串,到期執行的腳本、程序等
43 21 * * * 每天21:43 執行
0 17 * * 1 每周一的 17:00 執行
0,10 17 * * 0,2,3 每周日,周二,周三的 17:00和 17:10 執行
0-10 17 1 * * 毎月1日從 17:00到7:10 毎隔1分鐘 執行
0 0 1,15 * 1 毎月1日和 15日和 一日的 0:00 執行
42 4 1 * * 毎月1日的 4:42分 執行
0 21 * * 1-6 周一到周六 21:00 執行
0,10,20,30,40,50 * * * * 每隔10分 執行
*/10 * * * * 每隔10分 執行
* 1 * * * 從1:0到1:59 每隔1分鐘 執行
0 1 * * * 1:00 執行
0 */1 * * * 毎時0分 每隔1小時 執行
0 * * * * 毎時0分 每隔1小時 執行
2 8-20/3 * * * 8:02,11:02,14:02,17:02,20:02 執行
30 5 1,15 * * 1日 和 15日的 5:30 執行
如下配置表示:每天3:00執行這個腳本/opt/ clear_old_file.sh;
這個腳本功能是:刪除/data1 /data2這兩個目錄下的五天之內沒有訪問過的文件
0 3 * * * (cd /opt/ && ./clear_old_file.sh > /dev/null &)
[root@ShanWei_119_134_255_208 ~]# cat /opt/clear_old_file.sh
#!/bin/sh
find /data1/* -type f -atime +5 -exec rm {} \;
find /data2/* -type f -atime +5 -exec rm {} \;
exit 0
10 proc:待續…
/proc 文件系統是 GNU/Linux 特有的。它是一個虛擬的文件系統,此文件系統完全駐留在RAM中,因此在該目錄中的所有文件都不會消耗磁盤空間。通過它能夠非常簡便地了解系統中的內核信息、硬件信息等;還可以通過它進行系統內核的參數的配置。許多命令實際上只是從 /proc 的文件中收集信息,然后按照它們自己的格式組織后顯示出來;像前面介紹的命令基本就是這么干的。
關于“CentOS服務程序性能評估文檔的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。