AIX系統(tǒng)資源性能監(jiān)控與分析兼工作總結(jié).doc_第1頁
AIX系統(tǒng)資源性能監(jiān)控與分析兼工作總結(jié).doc_第2頁
AIX系統(tǒng)資源性能監(jiān)控與分析兼工作總結(jié).doc_第3頁
AIX系統(tǒng)資源性能監(jiān)控與分析兼工作總結(jié).doc_第4頁
AIX系統(tǒng)資源性能監(jiān)控與分析兼工作總結(jié).doc_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余18頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

AIX系統(tǒng)資源性能監(jiān)控與分析 -兼底層性能測(cè)試工作的總結(jié) 張煜剛 前言: 在綜合監(jiān)控入圍測(cè)試中,規(guī)范要求底層性能基于AIX環(huán)境達(dá)到入庫1000/s的高性能,在此背景下,基于MQ消息傳輸和數(shù)據(jù)庫入庫效率進(jìn)行性能監(jiān)控和調(diào)優(yōu)。性能監(jiān)控包括底層c應(yīng)用和java應(yīng)用各個(gè)模塊的性能測(cè)試及監(jiān)控,并從常見的性能指標(biāo)點(diǎn)查找和定位性能問題。在本文中就借鑒本次測(cè)試的環(huán)境和數(shù)據(jù)進(jìn)行總結(jié),并按照測(cè)試中遇到的具體細(xì)節(jié),來介紹常用命令在不同場(chǎng)景下的監(jiān)控效果,諸如vmstat、iostat、nmon和svmon等。一、測(cè)試環(huán)境熟悉通常aix會(huì)使用lsconf或lsdev命令來系統(tǒng)地列出所有資源配置,但實(shí)際工作中為了更直觀,常用配置都會(huì)先看cpu、內(nèi)存、交換空間和硬盤等信息,所以推薦使用以下腳本可以很方便地獲取出對(duì)應(yīng)數(shù)據(jù)(以103為例)-很簡(jiǎn)單地了解到CPU有3.5G,內(nèi)存有30G,交換空間有30G左右。lsconf | awk $1 /System/ | $2 /Clock/ |$1 /CPU/ | $1 /LPAR/ | $1 /Memory/ | $2 /Paging/ print $0 注意,如果env中環(huán)境變量LANG為中文zh_CN,該腳本無效。但是直接使用lsconf也可以快速查找到所需的指標(biāo)。1.CPU在測(cè)試之前為了確定測(cè)試環(huán)境的cpu,也可以使用nmon查看CPU主頻(GHZ)和其分布格局。通常AIX系統(tǒng)會(huì)使用雙核cpu,在nmon下首頁即可顯示cpu的基本配置。(nmon是基于topas的交互式工具,功能強(qiáng)大,可以跟蹤監(jiān)控,生成整體資源的性能報(bào)告,詳情參考nmon說明。但本文很多應(yīng)用基于交互式命令下的實(shí)時(shí)展現(xiàn)) 以103為例,該機(jī)器cpu有8個(gè)(是八個(gè)內(nèi)核,不是八個(gè)cpu,查詢cpu個(gè)數(shù)可以使用lsconf |grep Number),主頻為3503MHz。同時(shí)nmon交互界面中輸入C,即可顯示每個(gè)cpu的實(shí)際使用率(u代表usr,s代表sys),非常直觀顯示當(dāng)前cpu的整體負(fù)荷。2.內(nèi)存操作系統(tǒng)內(nèi)存嚴(yán)格分類有四種,寄存器register、高速緩存cache、物理內(nèi)存RAM和交換空間swap。數(shù)據(jù)傳輸和查詢速率會(huì)依次降低,所以任何系統(tǒng)都是盡量將最常用的數(shù)據(jù)保存在最高層的內(nèi)存中,而出現(xiàn)問題最多的也就是最底層的RAM或swap,如果RAM空間不足,進(jìn)程運(yùn)行中會(huì)調(diào)用頁面映射地址,從而導(dǎo)致大量cpu時(shí)間處于等待swap返回?cái)?shù)據(jù)的狀態(tài),并且io會(huì)升高。針對(duì)內(nèi)存另一個(gè)常用的概念是虛擬內(nèi)存,虛擬內(nèi)存屬于邏輯層面的概念,在unix系統(tǒng)監(jiān)控中常把RAM和SWAP空間統(tǒng)稱為虛擬內(nèi)存,但是針對(duì)進(jìn)程占用的虛擬內(nèi)存VSZ推薦學(xué)習(xí)系統(tǒng)原理,交換空間或虛擬內(nèi)存都是基于頁面交換或地址映射。首先可以查詢內(nèi)存的配置,以103為例,使用lsdev命令查詢可以發(fā)現(xiàn)有內(nèi)存和LR二級(jí)緩存兩種,而swap是基于硬盤的空間分配的,使用lsps -a命令即可查詢swap空間使用的硬盤和對(duì)應(yīng)空間大小。如果查詢當(dāng)前swap空間使用情況,使用lsps -s即可 在性能測(cè)試中如果要查詢當(dāng)前swap和內(nèi)存的使用情況,建議使用nmon工具,在命令行輸入nmon打開交互界面后,使用m快捷鍵即可查詢其中Physical是物理內(nèi)存RAM,而交換空間swap就是PageSpace。在AIX下,內(nèi)存管理通常優(yōu)先使用RAM,在進(jìn)程不常用達(dá)到一定閾值后,相關(guān)內(nèi)存頁面才會(huì)轉(zhuǎn)移到swap空間中,所以頁面交換就會(huì)對(duì)此進(jìn)行統(tǒng)計(jì)。所以,換種說法,在AIX系統(tǒng)中,會(huì)出現(xiàn)RAM使用到90%而swap空余很多的情況,這也是正常的。另外需要注意下方的Min/Maxfree參數(shù),該值表示當(dāng)RAM剩余內(nèi)存少于Maxfree值時(shí)(1088),就會(huì)開啟vmm機(jī)制。而如果內(nèi)存持續(xù)占用到剩余內(nèi)存小于Minfree值時(shí)(最小空閑頁鏈表尺寸)。系統(tǒng)就會(huì)偷頁以填充頁鏈表,保證有足夠的內(nèi)存頁面。此類代價(jià)會(huì)出現(xiàn)CPU飆升并且有較高swap的IO使用。而且對(duì)于RAM中文件緩存空間的設(shè)置也有參數(shù)指定,下方的Maxperm參數(shù)指定了文件頁面可以占用內(nèi)存的上限,因?yàn)槲募撁娌恢鲃?dòng)釋放,所以很容易造成內(nèi)存的文件頁面過高的占用,導(dǎo)致其他的應(yīng)用內(nèi)存使用緊張。3.硬盤 在確定測(cè)試環(huán)境的同時(shí)還要預(yù)估測(cè)試各個(gè)環(huán)節(jié)日志對(duì)應(yīng)的硬盤空間,這個(gè)使用df或du命令就能簡(jiǎn)單查詢出來。不在此贅述。但是要注意,在默認(rèn)df命令下,數(shù)據(jù)按照512k作為一個(gè)block來統(tǒng)計(jì),可以使用df -g命令獲取按GB為單位列舉的數(shù)據(jù)。 如果在nmon中使用d關(guān)鍵字,會(huì)打開在當(dāng)前環(huán)境下對(duì)應(yīng)硬盤的具體io操作,其中R代表讀的速率,W代表寫的速率和比值。4.網(wǎng)絡(luò)首先判斷所需要的環(huán)境拓?fù)?,是否MQ服務(wù)器在本機(jī)上,是否數(shù)據(jù)庫在本機(jī)上,然后確定所需網(wǎng)絡(luò)的配置,如果MQ和數(shù)據(jù)庫都在本機(jī)上運(yùn)行,網(wǎng)絡(luò)流量幾乎無法使用,如果使用nmon交互式窗口,使用n即可查詢配置,以及當(dāng)前的流量信息。由上圖可見,網(wǎng)絡(luò)適配器有en0,en1,et1,lo0四種,前兩者是1000M網(wǎng)卡,et1是1000M802.3無線網(wǎng)卡,最后lo0默認(rèn)為本機(jī)。二、性能測(cè)試分析思路1.CPU性能CPU性能現(xiàn)象直觀明了,容易監(jiān)控,但是分析并定位到具體進(jìn)程有些難。尤其是深入到進(jìn)程運(yùn)行的線程分析需要研發(fā)協(xié)助。所以需要分兩部分說明1)首先是系統(tǒng)資源整體CPU性能監(jiān)控。監(jiān)控cpu可以使用即時(shí)工具觀察,也可以在穩(wěn)定性測(cè)試中使用諸如vmstat 10vmstatdate +%m%d%H%M.log命令后臺(tái)執(zhí)行來保存數(shù)據(jù),但是該命令無法標(biāo)注時(shí)間,所以推薦使用sar u 10 600sardate +%m%d%H%M.log來單獨(dú)保存CPU信息。在即時(shí)監(jiān)控中都默認(rèn)開啟vmstat和iostat,對(duì)其中CPU的參數(shù)重點(diǎn)關(guān)注cpu部分的usr、sys、idl和wait。如果想要直觀查詢各個(gè)cpu的狀態(tài),使用nmon工具下鍵入c即可。 使用vmstat w可以很清晰的區(qū)分不同列的范圍,針對(duì)CPU主要有us、sy、id、wa,分別代表用戶進(jìn)程、系統(tǒng)進(jìn)程、idle和wating狀態(tài)的cpu。有的vmstat命令會(huì)加入ec和pc,其中ec是在運(yùn)行共享處理器的系統(tǒng)上,您正使用的分配 CPU 時(shí)間多少的一個(gè)指標(biāo)通常和us+sy相當(dāng),pc是消耗的共享處理器資源的百分比。其中usr比值是部署應(yīng)用的實(shí)際占用,與sys相比 有較高比值,如果sys在系統(tǒng)忙時(shí)占用比重與usr相當(dāng)甚至較高,則說明系統(tǒng)硬件支持能力達(dá)到瓶頸。 在cpu異常的時(shí)候還需要關(guān)注kthr下r和b,分別是當(dāng)前處于運(yùn)行狀態(tài)和block的進(jìn)程數(shù)量,idle小于15%-20%,cpu已經(jīng)達(dá)到高負(fù)荷運(yùn)轉(zhuǎn),此時(shí)如果進(jìn)程中b的數(shù)值繼續(xù)升高,說明cpu分配進(jìn)程會(huì)出現(xiàn)等待超時(shí),從而性能低下,此時(shí)就需要增加cpu的資源,或減少應(yīng)用的并發(fā)數(shù)量。此外在使用iostat時(shí),會(huì)在偏重硬盤活動(dòng)監(jiān)控的同時(shí)也會(huì)統(tǒng)計(jì)cpu信息 如圖,在avg-cpu后續(xù)的參數(shù)與vmstat的usr、sys、idle、wait、pc和ec等指標(biāo)保持一致(實(shí)踐證明使用truss跟蹤分析兩者的命令執(zhí)行都會(huì)調(diào)用內(nèi)核ptx_get_cpuinfo和ptx_get_sysinfo接口返回cpu數(shù)據(jù),故數(shù)值是一致的。) 如果在CPU升高的同時(shí)發(fā)現(xiàn)iostat下硬盤的tm_act比值也很高,即物理磁盤處于活動(dòng)狀態(tài)非常頻繁,由此引起的CPU瓶頸就需要結(jié)合硬盤監(jiān)控繼續(xù)分析。2)其次是具體進(jìn)程的CPU性能監(jiān)控 如果確定系統(tǒng)運(yùn)行期間CPU達(dá)到高負(fù)荷,性能出現(xiàn)瓶頸,就需要繼續(xù)分析是哪個(gè)應(yīng)用引起的CPU高。但是在離線的情況下,AIX不像solaris使用prstat P那樣可以監(jiān)控進(jìn)程的性能,只能使用topas或nmon命令(nmon實(shí)際就是基于topas和top工具,但功能更強(qiáng)大),所以目前都是即時(shí)狀態(tài)下確定有問題的資源(或者使用secureCRT工具的記錄回話功能來抓屏保存,這樣就能保存線程性能的歷時(shí)數(shù)據(jù))。如果出現(xiàn)cpu飆升,(通常會(huì)vmstat離線統(tǒng)計(jì)的趨勢(shì)圖觀察到一個(gè)尖峰),當(dāng)出現(xiàn)cpu峰值的時(shí)候,查詢是否有其他異常情況,如出現(xiàn)底層c應(yīng)用出現(xiàn)coredump、隊(duì)列積壓太大后啟動(dòng)硬盤io操作也會(huì)導(dǎo)致cpu升高,或jvm出現(xiàn)內(nèi)存溢出的heapdump甚至死循環(huán)造成的javacore。這些都是常見導(dǎo)致cpu飆升的問題。但是現(xiàn)象之外更需要數(shù)據(jù)支持。所以在實(shí)時(shí)監(jiān)控時(shí),需要使用ps aux 或nmon下的T方式查看使用cpu最高的進(jìn)程。Nmon工具下top-process有強(qiáng)大的分析工具,默認(rèn)是基礎(chǔ)信息主要關(guān)注PID、CPU(此處cpu是基于單核cpu的使用百分比進(jìn)行的,在此狀態(tài)下無sys進(jìn)程的顯示,故與ps的數(shù)據(jù)有差異)、Size、Char和Command,而且還在此交互窗口下通過輸入1,2,3,4,5,6支持顯示cpu,內(nèi)存io等詳情。在ps 命令下可以使用aux參數(shù)獲取性能信息,除了PID外,CPU和MEM都是按照系統(tǒng)整體資源進(jìn)行計(jì)算的百分比。而且該命令如果使用得當(dāng),可以針對(duì)PID進(jìn)程號(hào)進(jìn)行后臺(tái)記錄。當(dāng)然兩種方式查詢不一樣,ps aux會(huì)針對(duì)當(dāng)前系統(tǒng)下所有cpu總量進(jìn)行統(tǒng)計(jì),所以通常顯示都個(gè)位數(shù)內(nèi),而nmon下T方式(top排行),顯示的各個(gè)進(jìn)程所占據(jù)的單核cpu,所以顯示可能超出200%,這些數(shù)據(jù)都需要結(jié)合實(shí)際環(huán)境去理解,但是相同命令得出的結(jié)果還是具有可比性,所以查看cpu最高的幾個(gè)應(yīng)用都是一致的。 如果確定是什么應(yīng)用的cpu最高之后,就可以使用更深一步的命令來追蹤。這就是接下來要講的。3)具體進(jìn)程的性能監(jiān)控 a)Java應(yīng)用 如果確定CPU占用最高的是java,(通常情況下也都是java應(yīng)用占CPU最高)。針對(duì)java應(yīng)用推薦使用jcosole或jvisualvm工具監(jiān)控,該工具在AIX的64位jdk下可以獲取真實(shí)的jvm占用cpu數(shù)據(jù)和GC的cpu數(shù)據(jù)。值得一提是此工具也是監(jiān)控java應(yīng)用內(nèi)存溢出的重要工具。如下圖示,即為jvisualvm工具監(jiān)控效果(JDK1.6上都會(huì)自帶此工具,但默認(rèn)監(jiān)視下只能保存最近一小時(shí)的數(shù)據(jù)),其中CPU明確顯示出進(jìn)程使用的趨勢(shì)和gc進(jìn)程的趨勢(shì),而堆內(nèi)存顯示在當(dāng)前heap空間下實(shí)際占用的內(nèi)存大小,通常情況下會(huì)伴隨GC機(jī)制穩(wěn)定在一個(gè)范圍內(nèi)。而jconsole由于JDK版本問題,在AIX上運(yùn)行的java無法監(jiān)控到CPU,但是針對(duì)heap的監(jiān)控可以保持最長(zhǎng)1年的數(shù)據(jù),該日志在7*24小時(shí)中還是很有效果的。 但是以上工具都需要jmx協(xié)議支持,所以在確定監(jiān)控對(duì)象后,在unix上啟動(dòng)java應(yīng)用時(shí),應(yīng)該在其java執(zhí)行參數(shù)中輸入: -Dcom.sun.management.jmxremote.port=8699 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false其中port=8699就是監(jiān)控當(dāng)前的端口,可自行設(shè)置,在設(shè)置成功并啟動(dòng)java應(yīng)用后(注意:必須啟動(dòng)java應(yīng)用后才能正常獲取端口并監(jiān)控)。打開工具,在連接在新建連接中或遠(yuǎn)程機(jī)器的jmx連接請(qǐng)求中輸入 03:8699,即可打開java的遠(yuǎn)程監(jiān)控。在此工具下分析java應(yīng)用cpu占用較高的原因需要從線程入手,此時(shí)就需要研發(fā)協(xié)助分析,是哪些線程持續(xù)運(yùn)行,或持續(xù)阻塞狀態(tài)。同樣,對(duì)抽樣器的CPU時(shí)間也需要監(jiān)控,并判斷是什么方法導(dǎo)致問題。 此后就由研發(fā)協(xié)助確定具體的問題。b)C應(yīng)用 如果是C應(yīng)用或perl應(yīng)用,推薦使用tprof命令,該命令使用trace機(jī)制獲取一定時(shí)間片內(nèi)的周期。并列舉出當(dāng)前時(shí)間片內(nèi)所有線程占用的cpu。針對(duì)C推薦使用tprof -usekj -x sleep 10 ,會(huì)在當(dāng)前目錄下生成f文件,保存10s內(nèi)的數(shù)據(jù)。 首先會(huì)顯示系統(tǒng)當(dāng)前所有進(jìn)程的CPU占用,主要關(guān)注Total,Kernel,User以及wait進(jìn)程的整體占用。從kernel和user上可以查詢出該進(jìn)程使用系統(tǒng)資源和業(yè)務(wù)邏輯的比例,此處如果Sys%的比例和往常相比占有率偏高,如是可能是應(yīng)用問題。在此prof文件中繼續(xù)查找相關(guān)進(jìn)程,針對(duì)C應(yīng)用的不同子線程(或指針地址),使用cpu的數(shù)據(jù)都可以呈現(xiàn),此后定位就需要研發(fā)使用源代碼查詢了。 同理,該tprof工具也能獲取java應(yīng)用的線程數(shù)據(jù),但需要研發(fā)協(xié)助分析。優(yōu)化建議-1.減少所有循環(huán)中異常的判斷和變量的設(shè)置。2.減少不必要的數(shù)組排序,這對(duì)cpu消耗較大,尤其是從數(shù)據(jù)庫返回的數(shù)據(jù)排序。2.內(nèi)存性能 在CPU監(jiān)控的同時(shí),系統(tǒng)內(nèi)存也是重要的性能數(shù)據(jù),因?yàn)槿魏未髷?shù)據(jù)量的壓力測(cè)試下,每個(gè)應(yīng)用都會(huì)使用不同的方式占用內(nèi)存空間,在正常性能下,內(nèi)存會(huì)保持一個(gè)穩(wěn)定的范圍,如果出現(xiàn)內(nèi)存異常飆升,或持續(xù)上漲而導(dǎo)致內(nèi)存不足,性能測(cè)試甚至壓力測(cè)試的結(jié)果都會(huì)失敗。 通常監(jiān)控需要在啟動(dòng)測(cè)試對(duì)象前標(biāo)記內(nèi)存狀況,啟動(dòng)應(yīng)用后,查看日志到加載所有類和數(shù)據(jù)庫連接都建立完畢后,再查看內(nèi)存的剩余空間,然后執(zhí)行壓力測(cè)試后再監(jiān)控內(nèi)存,如果內(nèi)存穩(wěn)定在一個(gè)范圍內(nèi),表示性能基本正常,如果長(zhǎng)時(shí)間下內(nèi)存不再釋放,說明性能測(cè)試的內(nèi)存有問題。 但是這個(gè)思路需要穩(wěn)定性測(cè)試及長(zhǎng)時(shí)間監(jiān)控支持。同樣針對(duì)內(nèi)存需要按步驟來確定1)首先是系統(tǒng)資源整體內(nèi)存監(jiān)控 使用vmstat監(jiān)控memory參數(shù),通過歷史數(shù)據(jù)查詢free的變換趨勢(shì),注意其中free數(shù)據(jù)為4kb單位的block數(shù),avm是正在使用的活動(dòng)虛擬內(nèi)存量(4kb的block頁面數(shù)量)。由上文提到的內(nèi)存分析中,在nmon中可以實(shí)時(shí)查看內(nèi)存變化,并且監(jiān)控max/minfree參數(shù)確定是否啟動(dòng)交換。僅僅監(jiān)控的剩余空間還不能發(fā)現(xiàn)問題,我們可以使用svmon命令進(jìn)一步深入,但是該命令是基于頁面統(tǒng)計(jì)的,首先使用svmon G查詢整個(gè)系統(tǒng)中實(shí)內(nèi)存和調(diào)頁空間的使用的統(tǒng)計(jì)信息。 如上所示,memory是RAM內(nèi)存,pg space屬于交換空間,在inuse中顯示已占用的頁面,free是剩余的頁面數(shù),此數(shù)值與vmstat基本一致。但是需要注意的是pin數(shù)值,字面是釘在內(nèi)存的頁面數(shù),實(shí)際上是RAM中不能被VMM機(jī)制調(diào)用到的頁面數(shù),該值表示系統(tǒng)進(jìn)程使用的狀況。當(dāng)然只是確定剩余內(nèi)存被占用多少,是否始終占用還不夠,還需要定位是哪些應(yīng)用占用內(nèi)存較多,而這部分就需要進(jìn)程PS命令去概覽。2)查詢定位進(jìn)程的內(nèi)存使用 使用ps 命令監(jiān)控系統(tǒng)進(jìn)程,除了上方提供的aux參數(shù)外,還可以使用gv參數(shù),如ps gv | head -n 1; ps gv | egrep -v RSS | sort +6b -7 -n -r 執(zhí)行后,會(huì)針對(duì)所有進(jìn)程的RSS進(jìn)行逆序排序這里值得注意的參數(shù)有:RSS 常駐內(nèi)存,即每個(gè)進(jìn)程用于文本和數(shù)據(jù)段的RAM量,單位KB,。%MEM-進(jìn)程使用內(nèi)存的百分比,即RSS的實(shí)際量 / RAM 總量;TRS 用于進(jìn)程文本段的RAM量(單位為 KB);SIZE 為此進(jìn)程(文本和數(shù)據(jù))分配的分頁空間的實(shí)際大小。確定出使用最大內(nèi)存的進(jìn)程后,就可以使用svmon對(duì)以上內(nèi)存進(jìn)行單獨(dú)查詢,例如41549952,是java應(yīng)用,我們可以使用svmon P 41549952命令查詢?cè)撨M(jìn)程使用的具體內(nèi)存(注意此時(shí)命令執(zhí)行必須使用root用戶)。 實(shí)例檢查進(jìn)程是否有內(nèi)存泄露: 輸入命令:svmon P 進(jìn)程ID,然后記錄“Work process private”項(xiàng)對(duì)應(yīng)的值 等待一段時(shí)間,重復(fù)運(yùn)行剛才的命令:svmon P 進(jìn)程ID,對(duì)照“Work process private”項(xiàng)對(duì)應(yīng)的值有沒比以前增長(zhǎng)很多,如有可能會(huì)有泄露問題但是由于系統(tǒng)各項(xiàng)服務(wù)都有默認(rèn)進(jìn)程,這些真正長(zhǎng)時(shí)間占用的內(nèi)存的進(jìn)程用戶無法監(jiān)控到的,使用ps kfl可以查詢到相關(guān)信息,并在svmon中做進(jìn)一步分析此外,針對(duì)java應(yīng)用的內(nèi)存使用,由于jvm的機(jī)制,在aix下會(huì)占用一定的內(nèi)存作為jvm固定空間,所以建議使用jconsole和jvisualvm工具監(jiān)控,相關(guān)操作參見性能監(jiān)控的Java應(yīng)用部分。 針對(duì)oracle數(shù)據(jù)庫的進(jìn)程,基于oracle內(nèi)存分配機(jī)制,也是默認(rèn)占用10G左右空間作為其分配空間,所以oracle的進(jìn)程使用需要其他工具監(jiān)控,這里不做贅述。 3.硬盤IO通常性能測(cè)試中,伴隨內(nèi)存吃緊,交換頁面頻率上升,硬盤IO的問題會(huì)顯得更加重要,常見的IO操作都在大數(shù)據(jù)量消息傳輸導(dǎo)致日志記錄頻繁、隊(duì)列堵塞導(dǎo)致文件從緩存拷貝到硬盤還有數(shù)據(jù)庫大批量查詢等場(chǎng)景時(shí)會(huì)出現(xiàn)。所以需要從不同方式監(jiān)控和區(qū)別對(duì)待,而且很多情況下兩者會(huì)同時(shí)出現(xiàn),故需要區(qū)別對(duì)待。1)與交換空間有關(guān)的IO監(jiān)控 在硬盤整體IO出現(xiàn)升高的情況下,還需要區(qū)分情況確定是什么目錄或硬盤設(shè)備引起的,如果是/opt等常見目錄,就和日志記錄有關(guān)系,如果是在vmstat下監(jiān)控到page參數(shù)有明顯壓力,就說明處于頻繁換頁中。 注意監(jiān)控Page的數(shù)據(jù),包括以下參數(shù)。pi列表示每秒鐘從Paging Space置換到內(nèi)存的頁數(shù)。通常情況下,調(diào)頁空間是駐留在磁盤上的虛擬內(nèi)存的一部分。當(dāng)內(nèi)存過量使用時(shí),它用作溢出。調(diào)頁空間由用于存儲(chǔ)從實(shí)內(nèi)存中竊取到的工作組頁面的邏輯卷組成。當(dāng)進(jìn)程訪問一個(gè)竊取頁時(shí),產(chǎn)生了一個(gè)缺頁故障,這一頁必須從調(diào)頁空間讀入內(nèi)存。po列表示每秒鐘從內(nèi)存置換到Paging Space的頁數(shù)。無論什么時(shí)候竊取工作存儲(chǔ)器的一頁,如果它仍未駐留在調(diào)頁空間中或已被修改,那它會(huì)被寫入調(diào)頁空間。如果不被再次訪問,它會(huì)留在頁面調(diào)度設(shè)備中直到進(jìn)程終止或放棄空間。如果包含在出故障頁面中的后續(xù)地址引用導(dǎo)致缺頁故障,那么這些頁面將會(huì)由系統(tǒng)個(gè)別調(diào)進(jìn)。當(dāng)一個(gè)進(jìn)程正常終止,任何分配給該進(jìn)程的調(diào)頁空間將被釋放。如果這兩列持續(xù)大于零,則系統(tǒng)的性能瓶頸很可能是內(nèi)存。fr列表示每秒鐘頁面置換算法釋放的頁數(shù)。它使用一些條件選取要竊取的頁面以插入到可用內(nèi)存幀的空閑列表中。sr列表示每秒鐘頁面置換算法檢查的頁數(shù)。頁面替換算法在可以竊取足夠的頁面以滿足頁面替換線程的需要之前可能不得不掃描許多頁面幀。cy 列表示每秒頁面替換代碼掃描了 PFT 多少次。我們可以看到,上面輸出中I/O等待時(shí)間和等待隊(duì)列都很大。從中可以推斷,系統(tǒng)I/O大部分為內(nèi)存和Paging Space的交換。當(dāng)然以上數(shù)據(jù)只能獲取到目前整體系統(tǒng)的資源,還無法定位是什么應(yīng)用引起的操作導(dǎo)致,可以使用nmon命令下t關(guān)鍵字查詢(選擇5=I/O),查詢其中Paging參數(shù)中io和other較高的應(yīng)用,以此確定是否其內(nèi)存出現(xiàn)不足。 同樣在確定pid后可以是用svmon P查詢定位進(jìn)程的內(nèi)存地址。2)與文件系統(tǒng)有關(guān)的IO監(jiān)控通常文件系統(tǒng)的io監(jiān)控需要定位到什么目錄或硬盤下讀寫異常,使用iostat f 1命令即可,(注意,若iostat后不加上間隔周期的參數(shù),命令只返回當(dāng)前系統(tǒng)開機(jī)后整體周期io的平均值。)通常iostat可以使用管道方式保存監(jiān)控結(jié)果到文件中,然后根據(jù)目錄關(guān)鍵字進(jìn)程統(tǒng)計(jì)。 由于目錄都處于同一硬盤上,故tm_act無數(shù)據(jù),整體硬盤的活動(dòng)頻率在70%以上時(shí)就說明當(dāng)前io很嚴(yán)重了,其中最頻繁的目錄操作可以查詢吞吐量tps分析,讀入寫出速率都能即時(shí)監(jiān)控。 所有參數(shù)主要關(guān)注:% tm_act-表示物理磁盤處于活動(dòng)狀態(tài)的時(shí)間百分比(驅(qū)動(dòng)器的帶寬使用率),驅(qū)動(dòng)器在數(shù)據(jù)傳送和處理命令時(shí)是活動(dòng)的,例如尋道至新的位置?!按疟P活動(dòng)時(shí)間”百分比正比于資源爭(zhēng)用,反比于性能。當(dāng)磁盤使用率增加時(shí),性能就下降并且響應(yīng)時(shí)間就增加。Kbps 表示以 KB 每秒為單位的傳輸(讀或?qū)懀┑津?qū)動(dòng)器的數(shù)據(jù)量。tps 表示每秒鐘輸出到物理磁盤的傳輸次數(shù)。一次傳輸就是一個(gè)對(duì)物理磁盤的 I/O 請(qǐng)求。多個(gè)邏輯請(qǐng)求可被并為對(duì)磁盤的一個(gè)單一 IO 請(qǐng)求。傳輸具有不確定的大小。Kb_read 讀取的 KB 總數(shù)。Kb_wrtn 寫入的 KB 總數(shù)。 當(dāng)定位到進(jìn)程應(yīng)用的方法還是和nmon相同,查詢其中的Char參數(shù)即可。由此判斷哪些應(yīng)用使用的io最高,然后判斷是否有報(bào)錯(cuò)信息導(dǎo)致大量日志引起io升高。 此外,在文件監(jiān)控中還推薦使用filemon命令,該命令可以監(jiān)控一定周期內(nèi)所有文件的I/O狀況。在當(dāng)前目錄下使用filemon o ./filemon.out O All啟動(dòng)監(jiān)控后,使用trastop來結(jié)束監(jiān)控,并打開生成的filemon.out文件即可分析。 首先是最活躍的文件列表,有打開和讀寫記錄,及保存的位置節(jié)點(diǎn),相關(guān)數(shù)據(jù)需要研發(fā)協(xié)助分析。 還有活躍的卷,物理空間和邏輯磁盤的列表,后續(xù)還可以分析哪些進(jìn)程引起的讀寫較多,此時(shí)也能對(duì)照進(jìn)程監(jiān)控結(jié)果分析。4.網(wǎng)絡(luò)由于本次測(cè)試中MQ傳輸消息是使用binding方式,無需監(jiān)控network流量,故對(duì)此未有數(shù)據(jù),但是需要簡(jiǎn)單說明一下。Netstat命令是非常常用的網(wǎng)絡(luò)監(jiān)控命令,可以使用netstat i 1生成離線的流量監(jiān)控?cái)?shù)據(jù),并查詢趨勢(shì)來確定網(wǎng)絡(luò)流量是否持續(xù)運(yùn)行在最高位,(注意第一行數(shù)據(jù)是開機(jī)后到目前為止所有總數(shù),統(tǒng)計(jì)前需要注意數(shù)據(jù)的單位是包pactets,不能簡(jiǎn)單轉(zhuǎn)換成以kb為單位的流量。) 或者更直觀的使用nmon 工具查詢當(dāng)前的信息,注意的參數(shù)主要有Recv和Trans,因?yàn)檫@些數(shù)據(jù)是以kb為單位的,方便比較。三、其他性能測(cè)試環(huán)節(jié)1.MQ隊(duì)列的監(jiān)控 由于底層應(yīng)用的測(cè)試需要發(fā)送大量xml消息做壓力,并在各個(gè)模塊接收發(fā)送隊(duì)列中排查傳輸效率的瓶頸,因此需要針對(duì)MQ的各個(gè)隊(duì)列進(jìn)行監(jiān)控,類似于在runmqsc下執(zhí)行dis ql(*.Q) curdepth通過獲取到的當(dāng)前隊(duì)列深度來發(fā)送和接收的差異。 而且可以基于此機(jī)制針對(duì)不同隊(duì)列管理器的不同隊(duì)列分別監(jiān)控。相關(guān)shell可以參考如下腳本。while truedoecho date +%Y-%m-%d %H:%M:%Secho DIS QL(AMT.Q) CURDEPTH|runmqsc RUWEI_QM|grep CURDEPTH(sleep 1done 但是監(jiān)控的場(chǎng)景通常需要區(qū)分,因?yàn)樵诒O(jiān)控單獨(dú)模塊和整體模塊測(cè)試中,使用積壓消息的方式和持續(xù)加壓的方式是有不同的,目前經(jīng)驗(yàn)來看,積壓消息的壓力在理論上是最大壓力,可以獲取性能基準(zhǔn)進(jìn)行比較,但是在所有基準(zhǔn)確定后推薦使用持續(xù)發(fā)送消息的壓力來模擬真實(shí)場(chǎng)景。 1)單獨(dú)模塊收發(fā)速率的測(cè)試和監(jiān)控 如果單獨(dú)測(cè)試某個(gè)模塊的接收速率,可以先將其接收隊(duì)列消息積滿,啟動(dòng)應(yīng)用后,監(jiān)控隊(duì)列深度減少的趨勢(shì),即可得出該模塊的接收速率。如果單獨(dú)測(cè)試某個(gè)模塊的發(fā)送速率,可以上一操作的同時(shí)監(jiān)控該模塊的發(fā)送隊(duì)列,根據(jù)隊(duì)列深度增長(zhǎng)的趨勢(shì),得出該模塊的發(fā)送速率。通常發(fā)送速率會(huì)小于接受速率。 2)整體所有模塊隊(duì)列的監(jiān)控 在整體情況下監(jiān)控,就需要確定哪一個(gè)隊(duì)列深度是積壓最快的,也就是木桶的短板,在接收隊(duì)列出現(xiàn)堆積的情況下,該模塊是否CPU和內(nèi)存正常,就需要結(jié)合其進(jìn)程進(jìn)行查詢比較了。 注:在監(jiān)控隊(duì)列時(shí)推薦監(jiān)控隊(duì)列消息轉(zhuǎn)移到硬盤后的I/O和相關(guān)隊(duì)列的文件大小,針對(duì)/var/mqm/qmgrs/RU_WEI/queues目錄下會(huì)創(chuàng)建各個(gè)隊(duì)列的文件保存堆積時(shí)的數(shù)據(jù),此時(shí)使用du sm * 即可查詢不同隊(duì)列的大?。∕B) 此外在/var/mqm/qmgrs/RU_WEI/errors目錄下執(zhí)行tail f AMQERR01.LOG,可以針對(duì)MQ隊(duì)列的問題及時(shí)發(fā)現(xiàn)并定位。2.入庫速率的監(jiān)控針對(duì)業(yè)務(wù)場(chǎng)景常常有消息入庫的性能測(cè)試,需要研發(fā)在入庫操作中提前定義一個(gè)insert_time字段,保存入庫時(shí)的當(dāng)前時(shí)間。在所有測(cè)試數(shù)據(jù)發(fā)送入庫并結(jié)束后,使用以下sql執(zhí)行Select distinct(insert_time),count(*) from TABLE group by insert_time來確定每個(gè)入庫周期的記錄數(shù),從而獲取到入庫的速率。注:在監(jiān)控入庫操作時(shí)建議做數(shù)據(jù)庫性能監(jiān)控,確定數(shù)據(jù)庫系統(tǒng)服務(wù)的瓶頸。3.java應(yīng)用OOM的分析在性能測(cè)試中也會(huì)發(fā)現(xiàn)java應(yīng)用的執(zhí)行目錄下出現(xiàn)類似heapdump開頭的文件,這個(gè)是aix專用JDK的heap包,使用特殊的壓縮算法。如CPU章節(jié)中對(duì)java應(yīng)用的描述,需要添加-Dcom.sun.management.jmxremote.port=8699 -Dcom.sun.management.jmx

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論