服務器性能測試范圍
測試目的:
發(fā)現(xiàn)服務器的性能瓶頸。配置的不同能夠承載的最大任務數(shù)不同,能夠承載的壓力也不同。
CPU
內(nèi)存
磁盤
網(wǎng)絡
版本
測試與生產(chǎn)的環(huán)境配置不同?
通過多次壓測來計算性能耗損。
性能損耗的計算方式
多次壓測后的性能預估
橫線是服務器數(shù)目
豎線是服務器指標

進程與線程
定義與區(qū)別
進程是具有一定獨立功能的程序關于某個數(shù)據(jù)集合上的一次運行活動,是系統(tǒng)進行資源分配和調度的一個獨立單位。
線程是進程的一個實體,是CPU調度和分派的基本單位,他是比進程更小的能夠獨立運行的基本單位,線程自己基本上不擁有系統(tǒng)資源,只擁有一點在運行中必不可少的資源。一個線程可以創(chuàng)建和撤銷另一個線程。
一個線程只能屬于一個進程,而一個進程可以擁有多個線程。
線程是進程工作的最小單位。
一個進程會分配一個地址空間,進程與進程之間不共享地址空間。即不共享內(nèi)存。
同一個進程的不同的多個線程,共享父進程的地址空間。
線程在執(zhí)行過程中,需要協(xié)作同步。不同進程的線程間要利用消息通信的辦法實現(xiàn)同步。
線程作為調度和分配的基本單位,進程作為擁有資源的基本單位。
進程-優(yōu)點
每個進程互相獨立,不影響主程序的穩(wěn)定性,子進程崩潰不影響其他進程。
通過增加CPU,可以擴充性能。
可以盡量減少線程加鎖與解鎖的影響,極大的提高了性能。
進程-缺點
邏輯控制復雜,需要和主程序交互。
多進程調度開銷大。
線程-優(yōu)點
程序邏輯和控制方式簡單
所有進程可以直接共享內(nèi)存和變量等。
線程方式消耗的總資源比進程方式少
線程-缺點
每個線程與主程序公用地址空間,最大內(nèi)存地址受限。
線程之間的同步和加鎖不易控制。
一個線程的崩潰可能影響到整個程序的穩(wěn)定性。
Linux服務器內(nèi)存監(jiān)控-top命令
top:能夠實時監(jiān)控系統(tǒng)的運行狀態(tài),并且可以按照cpu以及內(nèi)存等進行排序。語法:top -hv | -abcHimMsS -d delay -n iterations [-u user | -U user] -p pid [,pid ...]
[zhimu@localhost ~]$ top -hv
top: procps version 3.2.8
usage: top -hv | -abcHimMsS -d delay -n iterations [-u user | -U user] -p pid [,pid ...]
-h:幫助
-p:監(jiān)控指定的進程。當監(jiān)控多個進程時,進程ID以逗號分隔。這個選項只能在命令行下使用。
M:按內(nèi)存使用率排序
P:按CPU使用率排序
z:彩色/黑白顯示。
top中的load average:系統(tǒng)的運行隊列的平均利用率,也可以認為是可運行進程的平均數(shù)。三個值分別表示在最后的1分鐘,5分鐘,15分鐘的平均負載值
top中在單核cpu中l(wèi)oad average的值為1時表示滿負荷狀態(tài)。同理在多核cpu中滿負載的load average的值為1*cpu核數(shù)。
vmstat
可以監(jiān)控操作系統(tǒng)的進程狀態(tài)、內(nèi)存、虛擬內(nèi)存、磁盤IO、CPU的信息。語法:vmstat [-a] [-n] [-S unit] [delay [count]]
-S : 使用指定單位顯示。參數(shù)有k,K,m,M,分別代表1000,1024,1000000,1048576字節(jié)(byte)。默認單位為K(1024 byte)
free
-h
-m
mpstat
mpstat最大的特點是:可以查看多核心CPU中每個計算核心的統(tǒng)計數(shù)據(jù)。語法:mpstat [-P {|ALL}] [internal [count]]
-p {|ALL} 表示監(jiān)控哪個CPU,CPU在[0,cpu個數(shù)-1]中取值
internal 相鄰的兩次采集的間隔時間
count采樣次數(shù),count只能和delay一起使用
當沒有參數(shù)時,mpstat則顯示系統(tǒng)啟動以后所有信息的平均值。有interval時,第一行的信息自系統(tǒng)啟動以來的平均信息。從第二行開始。輸出為前一個interbal時間段的平均信息。
netstat
-n:轉換數(shù)字顯示
-l :僅列出有在listen(監(jiān)聽)的服務狀態(tài)
-p :顯示建立相關鏈接的程序名
-t :顯示TCP相關選項
-u :僅顯示UPD相關選項
-i :顯示自動匹配接口的信息
-c :每隔一個固定時間,執(zhí)行該netstat命令。
iostat
iostat [ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] [
-j { ID | LABEL | PATH | UUID | ... } [ device [...] | ALL ] ] [ device [...] | ALL ] [ -p
[ device [,...] | ALL ] ] [ interval [ count ] ]
-x device 輸出指定要統(tǒng)計的磁盤設備名稱,默認為所有磁盤設備。
iostat -x xxx 3 2 //每隔3秒打印2次xxx磁盤的信息 ,(%util 繁忙程度)
萬能命令
sar簡介
(System Activity Reporter 系統(tǒng)活動情況報告)目前Linux上最為全面的系統(tǒng)系統(tǒng)性能分析工具之一,可以從多方面對系統(tǒng)的活動進行報告。
sar的性能監(jiān)控范圍
文件的讀寫情況,,系統(tǒng)調用的使用情況,磁盤I/O,CPU效率,內(nèi)存使用狀況,進程活動以及IPC有關的活動等。
sar [ -A ] [ -b ] [ -B ] [ -C ] [ -d ] [ -h ] [ -i interval ] [ -m ] [ -p ] [ -q ] [ -r ] [ -R ] [ -S ] [ -t ] [ -u [ ALL ] ]
[ -v ] [ -V ] [ -w ] [ -W ] [ -y ] [ -j { ID | LABEL | PATH | UUID | ... } ] [ -n { keyword [,...] | ALL } ] [ -I { int [,...]
| SUM | ALL | XALL } ] [ -P { cpu [,...] | ALL } ] [ -o [ filename ] | -f [ filename ] ] [ --legacy ] [ -s [ hh:mm:ss ] ] [ -e
[ hh:mm:ss ] ] [ interval [ count ] ]
sar語法說明
在命令行中,n和t兩個參數(shù)組合起來定義采樣間隔和次數(shù),t為采樣間隔,是必須有的參數(shù),n為采樣次數(shù),是可選的。默認值是1,-o file表示將命令結果以二進制格式存放在文件中,file在此處不說關鍵字,是文件名。options為命令行選項。
sar選項
-A :所有報告的總和
-u : CPU的利用率
-v :進程、節(jié)點、文件和鎖表狀態(tài)
-r :顯示系統(tǒng)內(nèi)存的使用情況
-B :內(nèi)存分頁情況
-b :緩沖區(qū)使用情況
Linux下的進程追蹤命令
strace簡介
strace命令是一個集診斷、調試、統(tǒng)計與一體的工具,我們可以使用strace對應用的系統(tǒng)調用和信號傳遞的跟蹤結果來對應用進行分析,以達到解決問題或者是了解應該工作過程的目的。
strace [-CdffhiqrtttTvVxxy] [-In] [-bexecve] [-eexpr]... [-acolumn] [-ofile] [-sstrsize] [-Ppath]... -ppid... / [-D]
[-Evar[=val]]... [-uusername] command [args]
strace -c[df] [-In] [-bexecve] [-eexpr]... [-Ooverhead] [-Ssortby] -ppid... / [-D] [-Evar[=val]]... [-uusername] command
[args]
strace選項
-p : 跟中指定的進程。
-f : 跟蹤由fork子進程系統(tǒng)調用
-c : 統(tǒng)計每次系統(tǒng)調用的所執(zhí)行的時間,次數(shù)和出錯的次數(shù)等。
-t : 在輸出中的每一行前加上時間信息。-tt 時間確定到微妙級。
-e : 輸出過濾器,通過表達式,可以過濾掉你不想要輸出。
-o filename : 默認strace將結果輸出到stdout,通過-o可以將輸出寫入到filename文件中。
Linux監(jiān)控工具
nmon
nmon是一種在linux操作系統(tǒng)上廣泛使用的監(jiān)控與分析工具,nmon所幾率的信息是畢竟全面的,它能在系統(tǒng)運行過程中實時地捕捉系統(tǒng)資源的使用情況,并且能輸出結果到文件中,然后通過nmon_analyzer工具產(chǎn)生數(shù)據(jù)文件與圖形化結果。
nmon用法
-f 這是nmon必選參數(shù),并且必須放在第一個,就是輸出文件的意思;用該參數(shù),nmon輸出的文件名就是默認名稱:hostname_date_time.nmon
-F <filename>這個參數(shù)和-f相同,只不過用戶可以自己定義文件名稱。
-s 采集數(shù)據(jù)的頻率
-c 采集數(shù)據(jù)的次數(shù)
-t 輸出最小化資源的進程數(shù)據(jù)
-h 查閱幫助。
nmon_analyzer重點sheet
SYS_SUMM 系統(tǒng)匯總頁,包含cpu占有率變化情況,磁盤IO的變化情況等信息;
AAA 關于操作系統(tǒng)以及nmon本身的一些信息
CPUnn 顯示執(zhí)行時間內(nèi)CPU占用情況
CPU_ALL 所有CPU的概述,顯示所有CPU平均占用情況
CPU_SUMM 每一個CPU在執(zhí)行時間內(nèi)占用情況
DGBUSY 磁盤組每個hdisk設備平均占用情況;
DGREAD 每個磁盤組的平均讀情況;
DGSIZE 每個磁盤組平均的讀寫情況
DGWRITE 每個磁盤組平均寫情況
DGXFER 每個磁盤組I/O的每秒操作
MEM 內(nèi)存相關的主要信息,使用、空閑內(nèi)存大小等。
NET 顯示系統(tǒng)中每個網(wǎng)絡適配器的數(shù)據(jù)傳輸速率(千字節(jié)/秒)
PAGE 本sheet統(tǒng)計相關頁信息的記錄
Linux定時任務
crontab
linux系統(tǒng)是由cron這個系統(tǒng)服務來控制的,Linux系統(tǒng)上包含很多的計劃性工作。使用者自己也可以設置計劃任務,所以Linux系統(tǒng)提供了使用者控制計劃任務的命令
/sbin/service crond status 查看定時任務的服務是否啟動
reload 重新載入配置
crontab的服務權限:
crontab的權限管理存儲在cron.allow文件與cron.deny文件中。如果沒有可以創(chuàng)建在etc目錄下
cron.allow文件存儲的是允許那些用戶使用crontab
cron.deny則相反
命令例子:
晚上11點到早上7點之間,每隔一小時重啟smb
- 23-7/1 * * * /etc/init.d/smb restart
每月的4號與每周一到周三的11點重啟smb
0 11 4 * mon-wed /etc/init.d/smb restart
一月一號的4點重啟smb
0 4 1 jan * /etc/init.d/smb restart
每小時執(zhí)行/etc/cron.hourly目錄內(nèi)的腳本
01 * * * * root run-parts /etc/cron.hourly