1、uptime命令
這個命令可以快速查看機器的負載情況。
2、dmesg命令
該命令會輸出系統日誌的最後10行。
3、vmstat命令
vmstat(8) 命令,每行會輸出一些系統核心指標,這些指標可以讓我們更詳細的了解系統狀態。
4、mpstat命令
該命令可以顯示每個CPU的佔用情況。
5、pidstat命令
pidstat命令輸出進程的CPU佔用率。
6、iostat命令
7、free命令
free命令可以查看系統內存的使用情況,
8、sar命令
sar命令在這里可以查看網路設備的吞吐率。
9、top命令
包含了前面好幾個命令的檢查的內容。
2. fortran語言的程序在讀取文件過程中,若讀取當前行的上一行用什麼命令
BACKSPACE(UNIT=number, ERR=errlabel, IOSTAT=iostat) 把文件讀寫位置退回一步。
其他相關的功能:
ENDFILE(UNNIT=number, ERR=errlabel, IOSTAT=iostat)使用這個命令會把目前文件的讀寫位置變成文件的結尾。
REWIND(UNIT=number, ERR=errlabel, IOSTAT=iostat)把文件的讀寫位置倒回到文件開頭。
3. linux性能監控iostat怎麼退出這個命令
方法/步驟
iostat -d -k 1 5 命令中參數-d 表示顯示磁碟使用情況,-k 表示顯示block的列以K為單位,1 5 表示 每隔1秒刷新一次,共顯示5次。
查詢結果中主要關注指標有: tps 每秒的傳輸次數,kB_read/s 每秒從設備讀取的數據量,kB_wrtn/s 每秒向設備寫入的數據量。kB_read 和 kB_wrtn 分別表示從設備讀取的數據總量和寫入的數據總量。
iostat -d -x -k 1 5 命令 參數 -x可以統計更多的信息,查詢結果中主要關注指標有:設備使用率 %util ,表示該統計時間內所有的處理IO時間,如果該值接近100%,說明該設備已經接近滿負荷,響應時間 await,表示每個IO處理的平均時間,單位是毫秒,如果該值大於10,說明系統IO處理比較慢了。
3
iostat -c 1 5 命令 參數-c 顯示CPU的狀態信息,查詢結果中主要關注指標有:%iowait ,該參數設置表示CPU等待輸入輸出完成的時間佔比,如果該值過高,表示系統存在IO瓶頸, %idle 表示CPU空閑時間佔比,如果該值小於70%,表示系統壓力比較大,如果持續低於10%,就需要解決CPU資源問題。
4. linux監控參數的級別有哪些6個以上
如果vmstat和iostat命令不能再你的電腦上運行,請安裝sysstat包。因為vmstat和iostat命令是集成在SYSSTAT(系統監視工具)包裡面。 iostat命令主要生成CPU和所有設備統計報告。你可以下載並安裝SYSSTAT,如果使用源代碼tar包安裝,從這里下載SYSSTAT,但我們建議你使用yum命令安裝。
Linux下安裝Sysstat
# yum -y install sysstat
vmstat:搜集內存、進程,paging等信息
iostat:中央處理單元(CPU)的統計數據和設備、分區輸入/輸出統計信息。
在Linux下6個vmstat命令例子:
1、列出活動和非活動的內存
在下面的示例中,有6列。每列的詳細介紹在vmstat的man手冊都會有詳細解釋。最顯著的欄位是memory下的free,swap下的si以及so。
[root@tecmint ~]# vmstat -a
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
1 0 0 810420 97380 70628 0 0 115 4 89 79 1 6 90 3 0
A、free : 空閑的空間。
B、si : 從磁碟到Swap的速度是千位元組每秒。
C、so :從Swape到磁碟的速度是千位元組每秒。
注意:如果您運行vmstat不帶參數,它預設會顯示匯總報告。
2、每隔'X'秒執行vmstat一次(N為執行的次數)
使用此命令,執行的vmstat每隔2秒鍾執行一次,執行6次後自動停止。
[root@tecmint ~]# vmstat 2 6
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 0 810420 22064 101368 0 0 56 3 50 57 0 3 95 2 0
0 0 0 810412 22064 101368 0 0 0 0 16 35 0 0 100 0 0
0 0 0 810412 22064 101368 0 0 0 0 14 35 0 0 100 0 0
0 0 0 810412 22064 101368 0 0 0 0 17 38 0 0 100 0 0
0 0 0 810412 22064 101368 0 0 0 0 17 35 0 0 100 0 0
0 0 0 810412 22064 101368 0 0 0 0 18 36 0 1 100 0 0
3、vmstat命令帶時間戳
vmstat命令使用-t參數顯示時間戳,如下圖所示的每一行都會記錄。
[tecmint@tecmint ~]$ vmstat -t 1 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ ---timestamp---
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 632028 24992 192244 0 0 70 5 55 78 1 3 95 1 0 2012-09-02 14:57:18 IST
1 0 0 632028 24992 192244 0 0 0 0 171 514 1 5 94 0 0 2012-09-02 14:57:19 IST
1 0 0 631904 24992 192244 0 0 0 0 195 600 0 5 95 0 0 2012-09-02 14:57:20 IST
0 0 0 631780 24992 192244 0 0 0 0 156 524 0 5 95 0 0 2012-09-02 14:57:21 IST
1 0 0 631656 24992 192244 0 0 0 0 189 592 0 5 95 0 0 2012-09-02 14:57:22 IST
4、各種計數器的統計信息
用vmstat -s參數來顯示各種事件計數器和內存統計信息。
[tecmint@tecmint ~]$ vmstat -s
1030800 total memory
524656 used memory
277784 active memory
185920 inactive memory
506144 free memory
26864 buffer memory
310104 swap cache
2064376 total swap
0 used swap
2064376 free swap
4539 non-nice user cpu ticks
0 nice user cpu ticks
11569 system cpu ticks
329608 idle cpu ticks
5012 IO-wait cpu ticks
79 IRQ cpu ticks
74 softirq cpu ticks
0 stolen cpu ticks
336038 pages paged in
67945 pages paged out
0 pages swapped in
0 pages swapped out
258526 interrupts
392439 CPU context switches
1346574857 boot time
2309 forks
5、磁碟統計
用vmstat的-d選項顯示所有磁碟的統計數據。
[tecmint@tecmint ~]$ vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
ram0 0 0 0 0 0 0 0 0 0 0
ram1 0 0 0 0 0 0 0 0 0 0
ram2 0 0 0 0 0 0 0 0 0 0
ram3 0 0 0 0 0 0 0 0 0 0
ram4 0 0 0 0 0 0 0 0 0 0
ram5 0 0 0 0 0 0 0 0 0 0
ram6 0 0 0 0 0 0 0 0 0 0
ram7 0 0 0 0 0 0 0 0 0 0
ram8 0 0 0 0 0 0 0 0 0 0
ram9 0 0 0 0 0 0 0 0 0 0
ram10 0 0 0 0 0 0 0 0 0 0
ram11 0 0 0 0 0 0 0 0 0 0
ram12 0 0 0 0 0 0 0 0 0 0
ram13 0 0 0 0 0 0 0 0 0 0
ram14 0 0 0 0 0 0 0 0 0 0
ram15 0 0 0 0 0 0 0 0 0 0
loop0 0 0 0 0 0 0 0 0 0 0
loop1 0 0 0 0 0 0 0 0 0 0
loop2 0 0 0 0 0 0 0 0 0 0
loop3 0 0 0 0 0 0 0 0 0 0
loop4 0 0 0 0 0 0 0 0 0 0
loop5 0 0 0 0 0 0 0 0 0 0
loop6 0 0 0 0 0 0 0 0 0 0
loop7 0 0 0 0 0 0 0 0 0 0
sr0 0 0 0 0 0 0 0 0 0 0
sda 7712 5145 668732 409619 3282 28884 257402 644566 0 126
dm-0 11578 0 659242 1113017 32163 0 257384 8460026 0 126
dm-1 324 0 2592 3845 0 0 0 0 0 2
6、統計顯示以MB為單位
vmstat以兆為單位顯示,用參數-S和M(大寫)。參數-S對應的值可以是k, K, m or M (默認為 kb)
[root@tecmint ~]# vmstat -S M 1 5
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 0 346 53 476 0 0 95 8 42 55 0 2 96 2 0
0 0 0 346 53 476 0 0 0 0 12 15 0 0 100 0 0
0 0 0 346 53 476 0 0 0 0 32 62 0 0 100 0 0
0 0 0 346 53 476 0 0 0 0 15 13 0 0 100 0 0
0 0 0 346 53 476 0 0 0 0 34 61 0 1 99 0 0
在Linux下6個iostat命令例子
7、顯示CPU和I/O統計信息
iostat的不帶參數的顯示CPU和I/ O的所有分區的統計信息,如下圖所示。
[root@tecmint ~]# iostat
Linux 2.6.32-279.el6.i686 (tecmint.com) 09/03/2012 _i686_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.12 0.01 1.54 2.08 0.00 96.24
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 3.59 161.02 13.48 1086002 90882
dm-0 5.76 159.71 13.47 1077154 90864
dm-1 0.05 0.38 0.00 2576 0
8、只顯示CPU的統計信息
用iostat的-c參數,如下圖所示只顯示CPU統計信息。
[root@tecmint ~]# iostat -c
Linux 2.6.32-279.el6.i686 (tecmint.com) 09/03/2012 _i686_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.12 0.01 1.47 1.98 0.00 96.42
9、只顯示磁碟的I/O統計
用iostat的-D參數顯示只有I/O的所有分區的統計數據。
[root@tecmint ~]# iostat -d
Linux 2.6.32-279.el6.i686 (tecmint.com) 09/03/2012 _i686_ (1 CPU)
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 3.35 149.81 12.66 1086002 91746
dm-0 5.37 148.59 12.65 1077154 91728
dm-1 0.04 0.36 0.00 2576 0
10、只顯示單一設備的I/O統計信息。
默認情況下,它會顯示所有分區的統計信息,使用-p和設備名稱參數只顯示只顯示磁碟用於特定設備的I/O統計信息。
[root@tecmint ~]# iostat -p sda
Linux 2.6.32-279.el6.i686 (tecmint.com) 09/03/2012 _i686_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.11 0.01 1.44 1.92 0.00 96.52
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 3.32 148.52 12.55 1086002 91770
sda1 0.07 0.56 0.00 4120 18
sda2 3.22 147.79 12.55 1080650 91752
11、顯示LVM統計
使用-n(大寫)參數只顯示LVM的統計數據,如圖所示。
[root@tecmint ~]# iostat -N
Linux 2.6.32-279.el6.i686 (tecmint.com) 09/03/2012 _i686_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.11 0.01 1.39 1.85 0.00 96.64
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 3.20 142.84 12.16 1086002 92466
vg_tecmint-lv_root 5.13 141.68 12.16 1077154 92448
vg_tecmint-lv_swap 0.04 0.34 0.00 2576 0
12、iostat的版本。
與-V(大寫)參數顯示iostat的版本,如下所示。
[root@tecmint ~]# iostat -V
sysstat version 9.0.4
(C) Sebastien Godard (sysstat orange.fr)
5. Linux命令行查看內存
用 'top -i' 看看有多少進程處於 Running 狀態,可能系統存在內存或 I/O 瓶頸,用 free 看看系統內存使用情況,swap 是否被佔用很多,用 iostat 看看 I/O 負載情況...
還有一種辦法是 ps -ef | sort -k7 ,將進程按運行時間排序,看哪個進程消耗的cpu時間最多。
top:
主要參數 :
free
1.作用
free命令用來顯示內存的使用情況,使用許可權是所有用戶。
**2.格式 **
**3.主要參數 **
uptime
vmstat
**1 觀察磁碟活動情況 **
磁碟活動情況主要從以下幾個指標了解:
**2 觀察cpu活動情況 **
vmstat比top更能反映出cpu的使用情況:
iostat
用於統計CPU的使用情況及tty設備、硬碟和CD-ROM的I/0量
即使爬到最高的山上,一次也只能腳踏實地地邁一步。
Linux查看CPU和內存使用情況:
在做Linux系統優化的時候,物理內存是其中最重要的一方面。自然的,Linux也提供了非常多的方法來監控寶貴的內存資源的使用情況。下面的清單詳細的列出了Linux系統下通過視圖工具或命令行來查看內存使用情況的各種方法。
1. /proc/meminfo
查看RAM使用情況最簡單的方法是通過 /proc/meminfo 。這個動態更新的虛擬文件實際上是許多其他內存相關工具(如:free / ps / top)等的組合顯示。 /proc/meminfo 列出了所有你想了解的內存的使用情況。進程的內存使用信息也可以通過/proc/<pid>/statm 和 /proc/<pid>/status 來查看。
atop命令是一個終端環境的監控命令。它顯示的是各種系統資源(CPU, memory, network, I/O, kernel)的綜合,並且在高負載的情況下進行了彩色標注。
free命令是一個快速查看內存使用情況的方法,它是對 /proc/meminfo 收集到的信息的一個概述。
GNOME System Monitor 是一個顯示最近一段時間內的CPU、內存、交換區及網路的使用情況的視圖工具。它還提供了一種查看CPU及內存使用情況的方法。
htop命令顯示了每個進程的內存實時使用率。它提供了所有進程的常駐內存大小、程序總內存大小、共享庫大小等的報告。列表可以水平及垂直滾動。
功能同 4 中介紹的GENOME版本。
memstat是一個有效識別executable(s), process(es) and shared libraries使用虛擬內存情況的命令。給定一個進程ID,memstat可以列出這個進程相關的可執行文件、數據和共享庫。
nmon是一個基於ncurses的系統基準測試工具,它可以監控CPU、內存、I/O、文件系統及網路資源等的互動模式。對於內存的使用,它可以實時的顯示 總/剩餘內存、交換空間等信息。
ps命令可以實時的顯示各個進程的內存使用情況。Reported memory usage information includes %MEM (percent of physical memory used), VSZ (total amount of virtual memory used), and RSS (total amount of physical memory used)。你可以使用 「–sort」選項對進程進行排序,例如按RSS進行排序:
smem命令允許你統計基於/proc信息的不同進程和用戶的內存使用情況。內存使用情況的分析可以導出圖表(如條形圖和餅圖)。
top命令提供了實時的運行中的程序的資源使用統計。你可以根據內存的使用和大小來進行排序。
vmstat命令顯示實時的和平均的統計,覆蓋CPU、內存、I/O等內容。例如內存情況,不僅顯示物理內存,也統計虛擬內存。
6. linux系統怎樣查看伺服器性能命令
通過執行以下命令,可以在1分鍾內對系統資源使用情況有個大致的了解。
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、內存、磁碟IO等)的利用率(utilization)、飽和度(saturation)和錯誤(error)度量,也就是所謂的USE方法。
下面我們來逐一介紹下這些命令,有關這些命令更多的參數和說明,請參照命令的手冊。
uptime
$ uptime
23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.02
這個命令可以快速查看機器的負載情況。在Linux系統中,這些數據表示等待CPU資源的進程和阻塞在不可中斷IO進程(進程狀態為D)的數量。這些數據可以讓我們對系統資源使用有一個宏觀的了解。
命令的輸出分別表示1分鍾、5分鍾、15分鍾的平均負載情況。通過這三個數據,可以了解伺服器負載是在趨於緊張還是區域緩解。如果1分鍾平均負載很高,而15分鍾平均負載很低,說明伺服器正在命令高負載情況,需要進一步排查CPU資源都消耗在了哪裡。反之,如果15分鍾平均負載很高,1分鍾平均負載較低,則有可能是CPU資源緊張時刻已經過去。
上面例子中的輸出,可以看見最近1分鍾的平均負載非常高,且遠高於最近15分鍾負載,因此我們需要繼續排查當前系統中有什麼進程消耗了大量的資源。可以通過下文將會介紹的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.
該命令會輸出系統日誌的最後10行。示例中的輸出,可以看見一次內核的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
^C
vmstat(8) 命令,每行會輸出一些系統核心指標,這些指標可以讓我們更詳細的了解系統狀態。後面跟的參數1,表示每秒輸出一次統計信息,表頭提示了每一列的含義,這幾介紹一些和性能調優相關的列:
r:等待在CPU資源的進程數。這個數據比平均負載更加能夠體現CPU負載情況,數據中不包含等待IO的進程。如果這個數值大於機器CPU核數,那麼機器的CPU資源已經飽和。
free:系統可用內存數(以千位元組為單位),如果剩餘內存不足,也會導致系統性能問題。下文介紹到的free命令,可以更詳細的了解系統內存的使用情況。
si, so:交換區寫入和讀取的數量。如果這個數據不為0,說明系統已經在使用交換區(swap),機器物理內存已經不足。
us, sy, id, wa, st:這些都代表了CPU時間的消耗,它們分別表示用戶時間(user)、系統(內核)時間(sys)、空閑時間(idle)、IO等待時間(wait)和被偷走的時間(stolen,一般被其他虛擬機消耗)。
上述這些CPU時間,可以讓我們很快了解CPU是否出於繁忙狀態。一般情況下,如果用戶時間和系統時間相加非常大,CPU出於忙於執行指令。如果IO等待時間很長,那麼系統的瓶頸可能在磁碟IO。
示例命令的輸出可以看見,大量CPU時間消耗在用戶態,也就是用戶應用程序消耗了CPU時間。這不一定是性能問題,需要結合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佔用率特別高,那麼有可能是一個單線程應用程序引起的。
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 java
07: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
^C
pidstat命令輸出進程的CPU佔用率,該命令會持續輸出,並且不會覆蓋之前的數據,可以方便觀察系統動態。如上的輸出,可以看見兩個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
[...]
^C
iostat命令主要用於查看機器磁碟IO情況。該命令輸出的列,主要含義是:
r/s, w/s, rkB/s, wkB/s:分別表示每秒讀寫次數和每秒讀寫數據量(千位元組)。讀寫量過大,可能會引起性能問題。
await:IO操作的平均等待時間,單位是毫秒。這是應用程序在和磁碟交互時,需要消耗的時間,包括IO等待和實際操作的耗時。如果這個數值過大,可能是硬體設備遇到了瓶頸或者出現故障。
avgqu-sz:向設備發出的請求平均數量。如果這個數值大於1,可能是硬體設備已經飽和(部分前端硬體設備支持並行寫入)。
%util:設備利用率。這個數值表示設備的繁忙程度,經驗值是如果超過60,可能會影響IO性能(可以參照IO操作平均等待時間)。如果到達100%,說明硬體設備已經飽和。
如果顯示的是邏輯設備的數據,那麼設備利用率不代表後端實際的硬體設備已經飽和。值得注意的是,即使IO性能不理想,也不一定意味這應用程序性能會不好,可以利用諸如預讀取、寫緩存等策略提升應用性能。
free –m
$ free -m
total used free shared buffers cached
Mem: 245998 24545 221453 83 59 541
-/+ buffers/cache: 23944 222053
Swap: 0 0 0
free命令可以查看系統內存的使用情況,-m參數表示按照兆位元組展示。最後兩列分別表示用於IO緩存的內存數,和用於文件系統頁緩存的內存數。需要注意的是,第二行-/+ buffers/cache,看上去緩存佔用了大量內存空間。這是Linux系統的內存使用策略,盡可能的利用內存,如果應用程序需要內存,這部分內存會立即被回收並分配給應用程序。因此,這部分內存一般也被當成是可用內存。
如果可用內存非常少,系統可能會動用交換區(如果配置了的話),這樣會增加IO開銷(可以在iostat命令中提現),降低系統性能。
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
^C
sar命令在這里可以查看網路設備的吞吐率。在排查性能問題時,可以通過網路設備的吞吐量,判斷網路設備是否已經飽和。如示例輸出中,eth0網卡設備,吞吐率大概在22 Mbytes/s,既176 Mbits/sec,沒有達到1Gbit/sec的硬體上限。
sar -n TCP,ETCP 1
$ sar -n TCP,ETCP 1
Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU)
12:17:19 AM active/s passive/s iseg/s oseg/s
12:17:20 AM 1.00 0.00 10233.00 18846.00
12:17:19 AM atmptf/s estres/s retrans/s isegerr/s orsts/s
12:17:20 AM 0.00 0.00 0.00 0.00 0.00
12:17:20 AM active/s passive/s iseg/s oseg/s
12:17:21 AM 1.00 0.00 8359.00 6039.00
12:17:20 AM atmptf/s estres/s retrans/s isegerr/s orsts/s
12:17:21 AM 0.00 0.00 0.00 0.00 0.00
^C
sar命令在這里用於查看TCP連接狀態,其中包括:
active/s:每秒本地發起的TCP連接數,既通過connect調用創建的TCP連接;
passive/s:每秒遠程發起的TCP連接數,即通過accept調用創建的TCP連接;
retrans/s:每秒TCP重傳數量;
TCP連接數可以用來判斷性能問題是否由於建立了過多的連接,進一步可以判斷是主動發起的連接,還是被動接受的連接。TCP重傳可能是因為網路環境惡劣,或者伺服器壓力過大導致丟包。
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命令包含了前面好幾個命令的檢查的內容。比如系統負載情況(uptime)、系統內存使用情況(free)、系統CPU使用情況(vmstat)等。因此通過這個命令,可以相對全面的查看系統負載的來源。同時,top命令支持排序,可以按照不同的列排序,方便查找出諸如內存佔用最多的進程、CPU佔用率最高的進程等。
但是,top命令相對於前面一些命令,輸出是一個瞬間值,如果不持續盯著,可能會錯過一些線索。這時可能需要暫停top命令刷新,來記錄和比對數據。
總結
排查Linux伺服器性能問題還有很多工具,上面介紹的一些命令,可以幫助我們快速的定位問題。例如前面的示例輸出,多個證據證明有JAVA進程佔用了大量CPU資源,之後的性能調優就可以針對應用程序進行。
7. chkconfig命令詳解
一、功能說明
chkconfig命令主要用來更新(啟動或停止)和查詢系統服務的運行級信息。
注意:它不是直接對服務進行啟動或停止,只是設置下一次啟動時的操作。也只是簡單的更改了符號鏈接。
二、語法格式
chkconfig [選項] [參數]
chkconfig [選項] [參數] [on/off/reset]
三、常用選項
--add:添加服務給chkconfig管理
--del:刪除chkconfig列表裡面某個服務
--list:列出chkconfig管理的服務列表
--level:設置級別(啟動級別)
四、參數
注意:需要把啟動腳本放在/etc/init.d下才可以使用chkconfig管理,並且由於chkconfig管理需要服務的啟動腳本必須擁有指定格式才可以,所以我們添加的自啟動服務,需要在文件頭添加固定的格式
啟動級別分為7中:
0級別:表示關機
1級別:表示單用戶,一般用來做root密碼修改等
2級別:多用戶但不包含NFS服務
3級別:完整的多用戶模式(命令行模式)
4級別:保留未使用
5級別:表示圖形界面
6級別:表示重啟
這些級別在/etc/inittab中有明確定義。
開機關閉順序,是我們手工指定的,指定的時候最好去/etc/rc.d/rc3.d下查看,一般避免和其他服務重復數字,並且盡量保持在100以內。
小結:我們執行chkconfig –level 3sshd on 時,它會在對應級別的啟動目錄下,產生一個以S開頭的軟連接用來指定這個服務的位置(在/etc/init.d/下)。如果 off掉,它會把之前的文件刪掉,產生一個以K開頭的軟連接文件指定服務的位置。(K,Kill。S,Start)
2) 精簡開機啟動服務
由於系統完畢後,基本所有的服務在2345級別都是打開的狀態,為了優化服務,我們一般會選擇性的開啟那些我們必須的服務,規避一下安全隱患。
sshd服務:用來提供用戶登錄的服務。
crond服務:用來執行計劃(定時)任務。
network服務:用來提供網路服務。
rsyslog服務:用來列印系統日誌信息的服務。
sysstat服務:是一個軟體包,包含監測系統性能及效率的一組工具包含:
iostat:提供CPU的使用率等數據
mpstat:提供單個或多個處理器的數據
sar:收集、報告存儲系統的活躍信息
建議新系統只開啟上述5個服務
3) 批量開關服務
方法1:因為所有服務默認是開啟的,所以我們只需要關閉不需要的服務。
方法二:首先關閉所有服務,然後只開啟我們需要的五個服務
8. 如何查看linux狀態
iostat
iostat 命令詳細地顯示了存儲子系統方面的情況。你通常用iostat來監控存儲子系統總體上運行狀況如何,並且在用戶注意到伺服器運行緩慢之前提早發現輸入/輸出緩慢的問題。相信我,你應該在用戶發現這些問題之前先發現這些問題!
meminfo和free
meminfo為你詳細顯示了內存方面的情況。你通常可以使用另一個程序,比如cat和grep,來訪問meminfo的信息。比如說,cat /proc/meminfo為你詳細顯示了伺服器的內存在任何一個時間的使用情況。
如果想快速了解內存的概要信息,可以使用free命令。簡而言之,free為你提供了概要信息;meminfo為你提供了詳細信息。
mpsta
mpstat命令可以報告多處理器伺服器上每個可用處理器的活動情況。如今,由於多核處理器,這個命令適用於幾乎所有伺服器。mpstat還可以報告所有伺服器上的處理器的平均活動情況。它讓你能夠按照系統或按照處理器來顯示總的處理器統計信息。這個概要信息可以在潛在的應用程序問題惹毛用戶之前提醒你注意。
9. iostat 怎麼查看根分區的i/o
輸出信息的意義
tps:該設備每秒的傳輸次數(Indicate the number of transfers per second that were issued to the device.)。"一次傳輸"意思是"一次I/O請求"。多個邏輯請求可能會被合並為"一次I/O請求"。"一次傳輸"請求的大小是未知的。
kB_read/s:每秒從設備(drive expressed)讀取的數據量;
kB_wrtn/s:每秒向設備(drive expressed)寫入的數據量;
kB_read:讀取的總數據量;
kB_wrtn:寫入的總數量數據量;這些單位都為Kilobytes。
上面的例子中,我們可以看到磁碟sda、sdb、sdc以及它的各個分區的統計數據。(因為是瞬間值,所以總TPS並不嚴格等於各個分區TPS的總和)
指定監控的設備名稱為sda,該命令的輸出結果和上面命令完全相同。
iostat -d sda 2
默認監控所有的硬碟設備,現在指定只監控sda。
10. iostat 查看硬碟IO太大,只能換硬體么
打開終端用top命令查看。輸入:
1
top #查看swap
1
2
iostat -x 1 10#查看%util %idle
#如果 iostat 沒有要 yum install sysstat
1
#如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁碟可能存在瓶頸。idle小於70% IO壓力就較大了,一般讀取速度有較多的wait.
1
2
3
#如果你想對硬碟做一個IO負荷的壓力測試可以用如下命令
time dd if=/dev/zero bs=1M count=2048 of=direct_2G
#此命令為在當前目錄下新建一個2G的文件
1
歡迎追問