一天一個關于測試知識點,5分鐘内講解你最關心的軟件測試問題,今天就接着來談談關于軟件測試中的“系統資源監控(window與類UNIX)”。
系統資源監控通常分為兩類系統:window和類unix(unix、linux、aix)
window系統資源監控
window系統資源監控有兩種方法:一是使用LoadRunner工具進行監控;二是使用windows自帶的性能工具perfmon進行監控。
一、使用LoadRunner工具進行監控
使用LoadRunner監控windows系統資源的步驟如下:
1.新建一個控制器場景2.切換到運行标簽頁3.找到window resource視圖4.單擊右鍵--add measurements(添加度量)5.在彈出的對話框中windows resources6.在monitored server machines框中,單擊add按鈕7.在彈出add machine對話框中,name文件框中輸入待監控的服務器IP地址,platform下拉框中選擇被監控服務器的類型8.單擊OK按鈕即可 loadrunner其實是不可能直接獲取到監控的數據,是間接通過windows操作系統自帶的性能監控工具perfmon來獲取系統資源的。
而perfmon這個工具是在C盤C:\WINDOWS\system32路徑下,所以如果要讓loadrunner可以獲取到這些數據,那麼就必須将其有訪問C盤的能力。
測試是否具有訪問C盤的權限命令如下:
\\ip\c$
例如:
\\127.0.0.1\c$
二、perfmon工具監控
perfmon是windows自帶的一個監控工具,所以在windows下不需要使用第三方監控工具,隻用這個監控工具就足夠了。
permon監控的步驟如下:
1.進入控制面闆--管理工具2.找到性能監視器3.在用戶自定義下創建一個數據收集器 類UNIX系統資源監控
不管什麼操作系統類型,其監控主要是對cpu、memory和IO進行監控
一、程序執行的模型
二、CPU
運行态:表示正在執行的線程。就緒态:準備好要運行的線程 ,等待現在目前在運行的線程運行結束後,就緒态中的線程就開運行。等待态:等待到就緒态的線程。 運行态中最多可以執行多少個線程數是固定,如果我們就緒态中的線程很多的話,那麼運行是無法處理過來的,這樣就必須排隊。排隊數越多,說明服務器處理的越慢。
CPU處理這些線程時,會為每線程準備一個時間片即固定的時間長度,如果在這個時間片中還沒有執行完成,那麼CPU會自動進行中斷處理,将時間片讓出來給其它的任務使用。
所謂CPU資源消耗其實是指CPU的使用的百分比,所謂的百分比是指CPU在工作時間占整個時間長度的百分比,這個百分比值越大,說明CPU越忙,進而表明我們的CPU是不夠的用。
CPU常見的監控工具:
1.vmstat
vmstat time count
如
vmstat 3 5
-r:隊列長度,表示在就緒态中的任務有多少個,如果這個值越大就表示服務器越忙,隊列是直接可以表示CPU是否處于瓶頸,隊列長度應該小于等于cpu個數乘以核數-us:用戶進程或任務所消耗的CPU資源,就是用戶所産生的任務所消耗的CPU資源-sy:系統進程或任務所消耗的CPU資源正常情況我們期望所消耗的CPU資源總和不要超85% -id:表示CPU空閑百分比,一般不低于15%-wa:表示暫挂磁盤IO或NFS加載時,所消耗的CPU時間百分比,如果這個值超過25%,我們認為磁盤不平衡。 2.top
top -d time
如
top -d 10
top工具可以分析CPU消耗的情況,并且會将每個進程所消耗的CPU進行排序,這樣子可以解決一個問題,就是我們知道哪些進程消耗的CPU值最多。
3.iostat
iostat time count
如
iostat 10 20
這裡顯示處理暫挂磁盤所消耗的CPU資源
4.ps
ps -ef
顯示所有進程消耗資源的情況
ps au
當前用戶下消耗CPU資源情況
查後台進程所消耗的情況
5.sar
sar是一個統計命令,用于統計CPU資源,并生成報告
sar -u time count
//表示單用戶模式下CPU消耗的資源的統計報告
sar -P ALL time count
//顯示所有CPU消耗的情況
關于分析CPU是否到達瓶頸的指标如下:
1.隊列長度直觀的反應CPU是否存在瓶頸2.CPU的使用率,建議閥值一般不超過85%3.熱密集應用程序,找出消耗CPU資源最多的進程4.wa的值建議閥值不超過25%,否則表示磁盤不平衡 三、memory
所以程序運行時所需要的數據,一般都是消耗的是内存的資源,但我們看到的内存叫實内存,在實際使用過程上,系統并不會将整個我們所謂内存條拿去直接使用,而有一個專門管理它的程序或機制,這個叫做虛拟内存管理器VMM。
在操作系統運行程序,程序并不是将整個物理内存拿去使用,而由VMM來操作它怎麼使用,VMM會将實内存分成固定的一些大小的空間,我們把這種空間稱之為頁,頁的大小一般為4KB、8KB、4MB等。
程序在運行時,會将程序分成兩種段:一是持久段;二是工作段。
持久段是指一種存在的東西 ,一般是我們說可執行程序。持久段是存放在磁盤中。為了解決程序在運行過程中可能存在的缺頁問題,我們磁盤中會一個調頁空間,調頁空間是如何調用頁的是由調頁算法來實現的。
工作段是工作過程中使用的東西 ,工作段一般包括類似像數據段和堆棧等。工作段隻有在工作時才存在,如果程序完成之後,這個工件段就不存在。
内存為了更好管理内存,VMM中會有一個PFT頁面桢表,所以在程序運行過程中會就會出PI和PO兩個指标,用于表示對調頁空調的使用情況。
空閑列表中頁面幀的數量受下瑞兩個參數控制:
minfree: ---空閑列表中可接受的實内存頁面幀的最小數量,當空閑列表的大小低于這個數時,VMM開始替換頁面,它持續竊取頁面,直到空閑列表的大小達到maxfree。
maxfree: ---通過VMM頁面替換空閑列表可達到的最大大小,當進程終止并釋放它們的工作段頁面或删除其頁面在内存中的文件時,結果是空閑列表的大小可能會超過這個數。
内存監控常用工具:
1.free
total:總的内存數,是指總的物理内存數,即RAM的大小。used:表示已使用的内存,所以有一個叫内存使用率的說法,一般不建議使用率超過85%,但是有一些操作當程序在工作時,會将所有的内存都吞入使用,但其實真實情況下并沒有使用這麼多内存。free:表示空閑的内存數 swap表示交換分區,正常情況下swap使用的值為零,隻有當RAM不夠的時候,我們才會調用swap的内存,也就是說如果你看到swap中,使用的值不為零,那麼就說明RAM不夠用。
2.vmstat
顯示内存的統計摘要信息 pi(pages paged in):表示從調頁空間調入到内存,調頁空間是一個存儲在磁盤中一個虛拟内容,pi是衡量調頁 空間的一個關鍵标示。 po(pages paged out):表示從内存寫入調頁空間的值,如果出現仍駐留調頁空間或已修改的,那麼還是保留在調頁空間,直到程序運行結束或終止。
pi和po的值是不确定的,但是pi和po的值正常情況下是不可能為零,如果在不斷的并過程中,我們發現pi和po一直為零,就說操作系統的内存存在問題。
正常情況下pi在增大的時候,po也會增大而非為零或一直不變。
3.ps v或ps -aux
顯示每個進程所消耗的資源
%MEM:表示該進程所消耗的内存百分比RSS:表示該進程所消耗的内存大小,單為KBDRS:表示可執行程序映射大小 4.vmstat -s
統計内存消耗值的情況,主要包括實内存的使用、swap的使用、pi、po
CPU context switches:表示CPU時鐘頻率被切換的次數,當這個值很大說明CPU會任務頻繁的調用并切換。 關于内存監控的主要指标:
---内存的使用率,一般閥值不超過85%,但即使超過85%也不能完全判斷内存是不夠用的
---swap的使用,一般swap的使用都為零,如果大于零,說明RAM不夠
---pi與po的值,如果pi和po的值一直很小或者為0說明内存有問題
---監控每個進程所消耗的内存值
---RSS顯示為每個進程所消耗的實内存
---CPU上下文切換次數
四、IO
對于類unix來說,我們通常說操作系統為文件操作系統,其主要的原因是在劃分或使用硬盤時類unix與windows有着截然不一樣的方式,所以在類unix中我們會說C盤、D盤的概念。
一個物理硬盤,通常可以分為多個卷組,給我們的直觀理解就是分為了多個盤,每個卷組分對分劃分出一個物理卷,每個物理卷可以分出多個邏輯卷,每個邏輯卷下面挂載我們不同的文件系統,文件系統下面存放着是文件。
不同的操作系統還會對物理卷大小進行分配,分配的大小是固定,可能4MB或8MB等。
磁盤存儲數據都永久段的數據,在程序運行時,調頁空間會将磁盤的永久段的信息調入到内存使用,即通過VMM來調用我們要的數據,就我們通常說主調頁空間工作的原理。
一般來我們看到的文件是順序,但實際上我們運行我們的文件不定是順序的,如果不是順序則說明我們的文件是零碎的,那麼如果訪問的是零碎的文件,這樣會大大增加我們尋道的時間。碎片率越高說明性能就越差。
IO監控命令:
1.iostat
iostat time count
例如:
iostat 5 10
avg-cpu:統計而磁盤操作引起的CPU資源消耗的平均數據。%iowait:暫挂磁盤所消耗的CPU的值,一般不超過25%,如果超過25%說明磁盤有問題。Blk_read/s:每秒從磁盤中讀的字節數Blk_wrtn/s:每秒寫入磁盤中的字節數Blk_read:總從磁盤中讀的字節數Blk_wrtn:總的寫入磁盤的字節數tps:每秒傳輸的次數,即我們說的每秒處理的IO請求數,但是每個請求有多少字節數是不确定。分析磁盤是否均衡:通過分析每個磁盤的讀寫數度來分析磁盤是否平衡。如果我們服務器有多個磁盤,那麼需要比較每個磁盤的讀寫字節數,如果磁盤讀寫數字的值差距很明顯,那麼說明磁盤不均衡,所謂的不均衡是指我們訪問磁盤讀寫的内容沒有平均的分配到所有的磁盤中。 2.sar
sar -d time count
例如
sar -d 5 10 123
avgrq-sz:平均隊列長度,未完成的任務排隊的長度,如果平均隊列長度越大,說明磁盤遇到瓶頸。%tm_act:表示磁盤活動時間百分比,即磁盤在活動時所占的百分比時間,也可以理解磁盤帶寬的利用率,如果這個值超過70%,我們磁盤是存在瓶頸的。因為%tm_act這個值越大,說不進程等待的時間長度會超過IO本身處理的時間。 關于IO監控的幾個方面:
1.wa或%iowait的值不超過25%,如果超過表示磁盤存在問題
2.磁盤是否處于平衡狀态
3.tps每秒傳輸次數
4.%tm_act的值建議不超過70%
5.avgrq-sz磁盤的隊列長度
6.碎片率不能太高
nmon
nmon是IBM的一個開源第三方監控的工具,由兩部分組成:一是nmon監控;二是nmon結果分析。
将nmon的工具上傳到需要監控服務上,準确的說這個工具是不用安裝,隻要修改權限即可。
chmod 777 nmon
運行nmon 、
./nmon
nmon工作原理
使用nmon記錄文件有兩種方式:一是界面數據顯示;二是記錄在文件中。
記錄在文件中的步驟如下:
1.輸入需要監控的命令
nmon [ -f | -F filename | -x | -X | -z ] [ -r runname ] [ -t | -T | -Y ]
[ -s seconds ] [ -c number ] [ -w number ] [ -l dpl ] [ -d ] [-g filename ] [-k disklist ] [ -C ] [ -G ] [ -K ] [ -o outputpath ] [ -D ] [ -E ] [ -J ] [ -V ] [ -P ] [ -M ] [ -N ] [ -W ] [ -S ] [-^ ] [ -O ] [ -L ] [ -I percent ] [ -A ] [ -m dir ] [ -Z priority ]
通常使用的命令格式如下:
./nmon -f -r test -s 10 -c 20
-f:表示記錄成文件
-r:表示運行本次監控的名稱
-s:采樣時間間隔
-c:采樣點的次數
2.将nmon文件轉換成csv文件
sort ***.nmon ***.csv
3.使用分析工具對生成的csv文件進行分析
今天關于“系統資源監控(window與類unix)”就學習到這裡了,每個工作日小編都會更新一個小知識,希望大家多多關注我們,一起來學習喔!
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!