




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、軟件性能與性能測(cè)試教程第1部分中國(guó)軟件評(píng)測(cè)中心陳兵本系列教程對(duì)軟件性能與性能測(cè)試這個(gè)主題進(jìn)行了較為全面的介紹和分析。教程分為三個(gè)部分:在第1部分,講解了軟件性能的基本知識(shí),介紹了常用的軟件性能指標(biāo),在分析影響軟件性能因素的同時(shí),以實(shí)例清晰講解了如何提高軟件的性能及性能的可擴(kuò)展性等問題;在第2部分,首先給出了性能測(cè)試的基礎(chǔ)知識(shí),然后側(cè)重于從性能工程的角度提出開展性能測(cè)試工作的流程,和進(jìn)行性能測(cè)試工作的策略,以及如何分析性能測(cè)試數(shù)據(jù);在第3部分,從開發(fā)的(而不是第3方測(cè)試角度,以實(shí)例為引導(dǎo),一步一步地分析講解在開發(fā)環(huán)境下進(jìn)行性能測(cè)試的策略、方法和手段(采用的工具。本系列教程可以用作軟件開發(fā)人員、軟
2、件測(cè)試人員、軟件項(xiàng)目經(jīng)理、軟件質(zhì)量人員和需要了解軟件性能測(cè)試的各級(jí)軟件管理人員的工作參考手冊(cè),也可作為有志于軟件開發(fā)和軟件性能測(cè)試領(lǐng)域人員的參考資料。.在20世紀(jì)60年代,計(jì)算機(jī)資源還十分有限,效率是被關(guān)心的最重要問題。到了70年代計(jì)算機(jī)迅速發(fā)展,程序員意識(shí)過分專注于性能會(huì)損害程序的可讀性和維護(hù)性。因而軟件性能和代碼調(diào)整受到的重視程度有所下降,隨著80年代微型計(jì)算機(jī)的革命,性能限制又把效率問題提出來。在整個(gè)90年代中它被人們關(guān)注的程度則逐漸下降。21世紀(jì)初,移動(dòng)電話和PDA等設(shè)備上嵌入式軟件受到的內(nèi)存限制,以及解釋型代碼的執(zhí)行時(shí)間過長(zhǎng),使效率再度成為了一個(gè)熱點(diǎn)話題。軟件性能什么是軟件性能什么是
3、系統(tǒng)的性能是個(gè)很大的概念,覆蓋面非常廣泛,對(duì)一個(gè)軟件系統(tǒng)而言,包括執(zhí)行效率、資源占用、穩(wěn)定性、安全性、兼容性、可擴(kuò)展性、可靠性等等。一般來說,性能是一種指標(biāo),表明軟件系統(tǒng)或構(gòu)件對(duì)于其及時(shí)性要求的符合程度;其次性能是軟件產(chǎn)品的一種特性,可以用時(shí)間來進(jìn)行度量。通常,對(duì)于軟件性能的關(guān)注是多個(gè)層面,用戶關(guān)注軟件性能,系統(tǒng)管理員關(guān)注軟件性能,軟件開發(fā)人員也關(guān)注軟件性能,那么這些不同的關(guān)注者所關(guān)注的“軟件性能”的具體內(nèi)容是不是都完全相同呢?如過不同,那么不同點(diǎn)在哪里?下面我們從三個(gè)不同的層面對(duì)軟件性能做一個(gè)簡(jiǎn)要的介紹。(1用戶視角的軟件性能從用戶角度來說,軟件性能就是軟件對(duì)用戶操作的響應(yīng)時(shí)間。(2管理員視
4、角的軟件性能從系統(tǒng)管理員的角度來看,所重點(diǎn)關(guān)注的軟件系統(tǒng)性能是:系統(tǒng)的響應(yīng)時(shí)間;系統(tǒng)運(yùn)行時(shí)服務(wù)器的狀態(tài),如CPU利用情況、內(nèi)存使用情況等;系統(tǒng)是否能夠?qū)崿F(xiàn)擴(kuò)展;系統(tǒng)支持多少用戶訪問;系統(tǒng)性能可能的瓶頸在哪里;系統(tǒng)是否支持7*24小時(shí)的業(yè)務(wù)訪問等。(3產(chǎn)品開發(fā)人員視角的軟件性能這也是本文的視角,即本文從開發(fā)人員的角度來討論軟件性能與性能測(cè)試。從開發(fā)人員的角度來說,會(huì)關(guān)心主要的用戶感受響應(yīng)時(shí)間,因?yàn)檫@畢竟是用戶的直接體驗(yàn);另外,開發(fā)人員也會(huì)關(guān)心系統(tǒng)的擴(kuò)展性等系統(tǒng)管理員所關(guān)心的內(nèi)容,這里指的是性能而不是功能的可擴(kuò)展性,這個(gè)問題本文的后面討論;但對(duì)開發(fā)人員來說,最想知道的是“如何通過調(diào)整設(shè)計(jì)和代碼等等
5、方法來提高軟件的性能表現(xiàn)”和“如何發(fā)現(xiàn)并解決軟件設(shè)計(jì)和開發(fā)過程中產(chǎn)生的由于多用戶訪問引起的缺陷”等等,參見表1。表1給出了開發(fā)視角的軟件性能關(guān)注內(nèi)容。開發(fā)人員關(guān)心的問題問題所屬環(huán)節(jié)架構(gòu)設(shè)計(jì)是否合理?系統(tǒng)架構(gòu)數(shù)據(jù)庫(kù)設(shè)計(jì)是否合理?數(shù)據(jù)庫(kù)設(shè)計(jì)代碼是否存在性能方面的問題?代碼系統(tǒng)中是否有不合理的內(nèi)存使用方式?代碼系統(tǒng)中是否存在不合理的線程同步方式?設(shè)計(jì)與代碼系統(tǒng)中是否存在不合理的資源競(jìng)爭(zhēng)?設(shè)計(jì)與代碼從表1中可以看到,問題所屬的關(guān)鍵環(huán)節(jié)是在代碼構(gòu)建上面。從開發(fā)人員的角度來看,可以用如下五個(gè)方面來作為評(píng)判性能的標(biāo)準(zhǔn):運(yùn)算的性能哪一個(gè)算法的執(zhí)行性能最好?內(nèi)存的分配程序運(yùn)行時(shí)需要耗費(fèi)多少內(nèi)存?啟動(dòng)的時(shí)間程序啟
6、動(dòng)需要多長(zhǎng)時(shí)間?這在Web項(xiàng)目中的影響不大,但要注意部分程序需要部署或運(yùn)行在客戶端時(shí)的情形(比如Applet程序。程序的可伸縮性在壓力負(fù)載的情況下,程序的性能如何?性能的感知用戶在什么情況下會(huì)覺得程序的性能不好?以上五個(gè)方面,在具體的使用場(chǎng)景可以有選擇的去評(píng)判。關(guān)于如何提高系統(tǒng)性能的問題,我們?cè)谙鹿?jié)進(jìn)行討論。如何提高程序的性能要提高軟件的性能,我們可以從以下幾個(gè)方面著手,使用高性能、速度快的硬件-$=速度使用恰當(dāng)?shù)木幊陶Z(yǔ)言和進(jìn)行編譯器優(yōu)化設(shè)計(jì)可擴(kuò)展的應(yīng)用程序架構(gòu)設(shè)計(jì)方面選擇正確的數(shù)據(jù)結(jié)構(gòu)和算法代碼調(diào)整避免使用較慢的OSAPIs調(diào)整、測(cè)量(注意是測(cè)量而不是測(cè)試、再調(diào)整、再測(cè)量(1從上面的幾個(gè)方法
7、來看,使用高性能、速度快的硬件很容易理解,也是決大多數(shù)人在碰到性能問題的時(shí)候首先會(huì)想到的辦法。采取這樣的方法總是很有效的嗎?(2使用恰當(dāng)?shù)木幊陶Z(yǔ)言和進(jìn)行編譯器優(yōu)化也是提高軟件性能的方式之一。例如在使用IntelC+編譯器時(shí),編譯器選項(xiàng)可以組合。每種優(yōu)化各有其特點(diǎn),嘗試著各種優(yōu)化選項(xiàng)的效果,有時(shí)各種優(yōu)化選項(xiàng)組合使用可能效果更好。使用時(shí),這些選項(xiàng)加到ProjectSetting對(duì)話框中。如圖1所示。圖1同樣,在原則Java語(yǔ)言構(gòu)建軟件系統(tǒng)時(shí),可以針對(duì)JDK進(jìn)行調(diào)優(yōu)。例如:選擇合適的JDK版本:不同版本的JDK,甚至不同廠家的JDK可能都存在著很大的差異,對(duì)于性能優(yōu)化的程度不同。一般來說,盡可能選擇
8、最新發(fā)布的穩(wěn)定的JDK版本。最新的穩(wěn)定的JDK版本相對(duì)以前的JDK版本都會(huì)做一些bug的修改和性能的優(yōu)化工作。垃圾收集:垃圾收集就是自動(dòng)釋放不再被程序所使用的對(duì)象的過程。當(dāng)一個(gè)對(duì)象不再被程序所引用時(shí),它所引用的堆空間可以被回收,以便被后續(xù)的新對(duì)象所使用。垃圾收集器必須能夠斷定哪些對(duì)象是不再被引用的,并且能夠把它們所占據(jù)的堆空間釋放出來。如果對(duì)象不再被使用,但還有被程序所引用,這時(shí)是不能被垃圾收集器所回收的,此時(shí)就是所謂的“內(nèi)存泄漏”。監(jiān)控應(yīng)用程序是否發(fā)生了內(nèi)存泄漏,有一個(gè)非常優(yōu)秀的監(jiān)控工具推薦給大家Quest公司的JProbe工具(這樣的工具非常多,有許多是開源的,使用它來觀察程序運(yùn)行期的內(nèi)存
9、變化,并可產(chǎn)生內(nèi)存快照,從而分析并定位內(nèi)存泄漏的確切位置,可以精確定位到源碼內(nèi)。這個(gè)工具的使用我在后續(xù)的章節(jié)中還會(huì)做具體介紹。Java堆的優(yōu)化:Java堆是指在程序運(yùn)行時(shí)分配給對(duì)象生存的空間。通過-mx/-Xmx和-ms/-Xms來設(shè)置起始堆的大小和最大堆的大小。根據(jù)自己JDK的版本和廠家決定使用-mx和-ms或-Xmx和-Xms。Java堆大小決定了垃圾回收的頻度和速度,Java堆越大,垃圾回收的頻度越低,速度越慢。同理,Java堆越小,垃圾回收的頻度越高,速度越快。要想設(shè)置比較理想的參數(shù),還是需要了解一些基礎(chǔ)知識(shí)的。Java堆的最大值不能太大,這樣會(huì)造成系統(tǒng)內(nèi)存被頻繁的交換和分頁(yè)。所以最大
10、內(nèi)存必須低于物理內(nèi)存減去其他應(yīng)用程序和進(jìn)程需要的內(nèi)存。而且堆設(shè)置的太大,造成垃圾回收的時(shí)間過長(zhǎng),這樣將得不償失,極大的影響程序的性能。在效率方面,程序的效率與詳細(xì)設(shè)計(jì)階段確定的算法的效率直接有關(guān)。在詳細(xì)設(shè)計(jì)翻譯轉(zhuǎn)換成源程序代碼后,算法效率反映為程序的執(zhí)行速度和存儲(chǔ)容量的要求。要從計(jì)算復(fù)雜性、內(nèi)存的使用、數(shù)據(jù)依賴性等多方了解,使用如何實(shí)現(xiàn)算法指導(dǎo)起一個(gè)重要作用。而數(shù)據(jù)的依賴性與指令的選擇密切相關(guān),以Intel86x指令結(jié)構(gòu)為例:選擇指令需要實(shí)現(xiàn)一種算法的指令可能對(duì)性能有一個(gè)大的影響。因此檢測(cè)采用某個(gè)算法中的某些指令,像整數(shù)加法可能執(zhí)行兩個(gè)/S,還執(zhí)行其它指令;像整數(shù)除法,可能每23Clock才能
11、執(zhí)行一次。由于不同的指令有不同的延遲和吞吐量,指令的速度是一定的。指令輸入準(zhǔn)備好以后(預(yù)取來自內(nèi)存,指令的延遲是要求執(zhí)行開始并完成一條指令的時(shí)鐘數(shù)。例如:整數(shù)乘大約15-18Clock。所有,乘法的響應(yīng)在它開始執(zhí)行以后有可利用的15-18Clock。指令的吞吐量是開始執(zhí)行相同的指令之前處理器要求等待的時(shí)鐘數(shù)。指令的吞吐量總是少于或等于指令的延遲。乘法的吞吐量是5Clock,意味著新的乘法可能開始執(zhí)行每5Clock,即使它花費(fèi)15-18Clock去響應(yīng)任何指定的乘法。指令流水線引起吞吐量和延遲的Clock數(shù)是不同的。數(shù)據(jù)的依賴性和指令的平行性數(shù)據(jù)的依賴性影響處理器的同步執(zhí)行指令的能力,它能提高算
12、法的性能。Pentium處理器是能夠每個(gè)Clock執(zhí)行六條指令,但由于指令流的問題,同步執(zhí)行指令數(shù)經(jīng)常是較低的。理想的情況如圖2所示:圖2圖2這是假設(shè)這些指令之間沒有數(shù)據(jù)依賴性存在,允許它們同時(shí)進(jìn)行,只有指令的延遲和吞吐量的限定。在實(shí)際情況下,數(shù)據(jù)依賴性往往存在,并且這會(huì)使結(jié)局有巨大的不同,如圖3所示:在圖3中,數(shù)據(jù)的依賴性和延遲限制指令的平行性對(duì)算法性能來說是關(guān)鍵的限制因素。補(bǔ)充指令平行性規(guī)則對(duì)各個(gè)已存在的處理器家族已有說明,但用數(shù)據(jù)依賴性和延遲解釋能產(chǎn)生一個(gè)稍微好些的執(zhí)行指令,可以忽略補(bǔ)充指令平行性規(guī)則。圖3對(duì)于線程的監(jiān)控可以借助很多工具來完成,圖4是采用JProfiler對(duì)線程進(jìn)行的監(jiān)控
13、例子。乘法:a=u*vb=w*xc=y*za=u*vb=w*xc=y*z延遲乘法:a=w*x*y*zw*xy*zwx*yz圖4(3設(shè)計(jì)可擴(kuò)展的應(yīng)用程序:指的是軟件性能上的可擴(kuò)展。這點(diǎn)可能會(huì)使很多讀者感到很困惑,難道還有哪些設(shè)計(jì)會(huì)造成使用更高速度的硬件不能提高軟件的性能嗎?答案是肯定的,如果一個(gè)軟件設(shè)計(jì)的不具備可以擴(kuò)展性,那么在4個(gè)、8個(gè)CPU的機(jī)器上運(yùn)行會(huì)比在1個(gè)CPU的機(jī)器上運(yùn)行的速度快不了多少。讓我們用一個(gè)例子來說明這個(gè)問題。這是一個(gè)SMPT服務(wù)器的例子,為了說明問題,我們將該郵件服務(wù)器的實(shí)現(xiàn)進(jìn)行高度抽象(實(shí)際要復(fù)雜的多。這個(gè)服務(wù)器的基本功能就是:發(fā)郵件,來郵件后進(jìn)行處理,分析郵件發(fā)給誰(shuí),
14、如果發(fā)給是本機(jī)的郵箱的人員就給把它直接拷貝到一個(gè)郵箱中去。如果是傳送的另外一個(gè)SMPT服務(wù)器的,就通過TCPIP把它給轉(zhuǎn)發(fā)出去。高度抽象后的抽象SMPT服務(wù)器/ReadSMTPcommands/datafromsockets-首先把郵件從sockets讀進(jìn)來If(ReadFile(/varioushousekeepingremoved./ParseSMTPrecipientsandotherheaders-分析讀進(jìn)來的郵件,先分析頭文件(地址,來源的信息If(!ParseSMTPHeaders(./handleerrors./Parsebodies-然后分析文件的bodiesIf(!Parse
15、SMTPBodies(./handleerrors./Localdeliveryorrouting做判斷If(LocalDelivery(.-本機(jī)Deliver(.;拷到一個(gè)目錄下else下一極SMTP服務(wù)器Route(;轉(zhuǎn)發(fā)到另外的SMTP服務(wù)器/SendSMTPresponsethroughSocketIf(WriteFile(/varioushousekeepingskips.寫文件或Socket穿到另外的服務(wù)器傳統(tǒng)的線程的設(shè)計(jì)方法是這樣做的:threadtoreceiveanddispatchSMTPrequest64workerthreadsdoing:(64個(gè)工作線程去做剩余的4個(gè)
16、步驟ParseSMTPheadersParseSMTPbodiesLocaldeliveryRouting每一個(gè)線程都一步一步的依次做這4個(gè)步驟,然后在做下一個(gè),不斷的重復(fù)。這樣的設(shè)計(jì)其性能就不具備可擴(kuò)展性,如果感到郵件服務(wù)器的處理能力不夠,通過增加CPU是無(wú)法提高其處理能力的,為什么呢?前面在講到效率的時(shí)候,我們說要從內(nèi)存的使用等方面進(jìn)行考慮。下面我們看看相關(guān)硬件對(duì)這個(gè)設(shè)計(jì)的影響。我們都知道,對(duì)于存儲(chǔ)來說,存取速度的快慢從高到低的順序是:LIcache-L2cache-RAM-。因此,如果我們的代碼從硬盤上讀入進(jìn)入cache后能夠很好的在cache存放,你的程序的不斷的被重用,不斷的被執(zhí)行的
17、運(yùn)行,你的效率就會(huì)非常的高。而如果你的大不分程序都要經(jīng)常從硬盤、從內(nèi)存讀入后執(zhí)行,那么你的程序效率當(dāng)然就會(huì)很低了。而且你也知道,雖然這些年CPU、內(nèi)存的速度增長(zhǎng)很快,但是硬盤的讀寫速度并沒有多大的提高。這里有個(gè)比喻:如果1秒鐘可以清零一個(gè)寄存器這樣的簡(jiǎn)單操作,那么:在LIcache中操作-只需要1秒(1倍在L2cache中操作需要4秒(plus3secondsextrawork-7倍在RAM中操作-需要25-150秒(24倍-150倍在磁盤中操作-則需要3個(gè)周(2,000,000倍因此我們的設(shè)計(jì)應(yīng)該充分的利用cache或內(nèi)存,這樣程序的效率才能夠得到高性能。SMPT服務(wù)器的全新設(shè)計(jì)是:thre
18、adtoreceiveanddispatchSMTPrequest(與原來的設(shè)計(jì)一樣workerthreadperCPU剩余的4個(gè)步驟,每個(gè)步驟對(duì)應(yīng)一個(gè)隊(duì)列,線程每一次都把一個(gè)隊(duì)列的全部工作都做完后,才做其它的步驟。ParseSMTPheaders/bodiesLocaldeliveryRoutingSocketsendandfileI/O這樣一來,有什么好處呢?很顯然,對(duì)于每一個(gè)步驟來說,數(shù)據(jù)是不一樣的,但是程序是相同的,每次都處理一個(gè)隊(duì)列中的所有內(nèi)容,因此程序得到了不斷的重用。圖5給出了兩個(gè)設(shè)計(jì)的效果比較。Overa)iPerformance300002500020000150001000
19、050000SMTPServerThreadsTraditionalThreads圖5(4代碼的調(diào)整:代碼優(yōu)化的方法有許多,針對(duì)不同的環(huán)境、編程語(yǔ)言等都有特定的有關(guān)優(yōu)化方法,可以參照相關(guān)資料,例如在Java編程方面可以看看JavaPerformanceTuning(OReilly這本書。代碼是要在個(gè)編程過程中不斷進(jìn)行調(diào)整的,因此調(diào)整、測(cè)量、再調(diào)整、再測(cè)量。通過不斷的測(cè)量找出需要進(jìn)行性能優(yōu)化的部位,那么在開發(fā)中如何進(jìn)行測(cè)量,采用怎樣樣的方法、工具就顯得極為重要了,這方面的問題我們將在本文的后面詳細(xì)講述。持續(xù)性能檢測(cè)、監(jiān)視和改進(jìn)代碼,這樣容易做到性能優(yōu)化,而且還可以有效的發(fā)現(xiàn)和改進(jìn)性能。而等到最后
20、才開始優(yōu)化性能,會(huì)變得更困難和費(fèi)時(shí)。有關(guān)軟件性能的基礎(chǔ)知識(shí)(1多進(jìn)程多進(jìn)程是在同一個(gè)系統(tǒng)中執(zhí)行多個(gè)進(jìn)程或程序的能力,多進(jìn)程的主要好處是提高系統(tǒng)的吞吐量。某些應(yīng)用依賴多進(jìn)程去優(yōu)化吞吐量。如:同時(shí)有許多用戶登錄系統(tǒng)。從硬件的角度,提高性能最容易的方法是在主板上放入多于一個(gè)的CPU,這樣不同的CPU既可以承擔(dān)不同的工作,又可以使它們平行運(yùn)行,做相同的工作。在一個(gè)對(duì)稱多進(jìn)程環(huán)境中,CPU共享相同的內(nèi)存,在一個(gè)CPU中運(yùn)行的代碼可能影響另一個(gè)CPU使用內(nèi)存,其結(jié)果會(huì)受影響。如:你不能確定早先你給變量設(shè)定的值仍是原值,因另一個(gè)CPU可能對(duì)它做了操作。(2多線程多線程是一個(gè)進(jìn)程在相同的地址空間里同時(shí)執(zhí)行多道
21、線程,這些線程有不同的執(zhí)行路徑和獨(dú)立的堆棧,也可能線程有相同的執(zhí)行路徑而操作不同的數(shù)據(jù)。如:一個(gè)線程打印,一個(gè)線程計(jì)算并存或同一個(gè)應(yīng)用計(jì)算用多個(gè)線程,各自有不同的數(shù)據(jù)等。系統(tǒng)支持多線程可以改進(jìn)各個(gè)應(yīng)用的性能。(3加速加速是調(diào)整后的性能與原性能之比,或它是基線的測(cè)量性能和優(yōu)化后的性能的典型計(jì)算之比。當(dāng)你設(shè)置調(diào)整目標(biāo)和測(cè)量改進(jìn)性能時(shí),它是有用的。加速通常有兩種表示方法:(4可測(cè)量性可測(cè)量性是隱藏在應(yīng)用和系統(tǒng)中的一種能力,由增加資源數(shù)量來提高性能。如:向系統(tǒng)中加入更多的處理器、更多的RAIDs、或更多的磁盤組成RAID,應(yīng)用程序性能會(huì)更好。兩種可能的方法檢驗(yàn)是否應(yīng)用是可計(jì)量的:固定負(fù)載,用增加CPU
22、提高性能增加CPU,增加負(fù)載來維持性能(5“Amdahl定律的圖形表示和公式圖6Time=BaselineTimeOptimizedTimeRate=OptimizedTimeBaselineTimeSpeed-UpofFractionEnhanced(1-FractionEnhanced+FractionEnhancedSpeed-Up=1如果僅有一半的執(zhí)行時(shí)間被優(yōu)化,2倍的加速是不可能的。主要主要性能指標(biāo)性能指標(biāo)性能指標(biāo)種類種類(1并發(fā)用戶數(shù)(Concurrentuserssupported并發(fā)用戶數(shù)是指在某一給定時(shí)間內(nèi),某個(gè)特定點(diǎn)上進(jìn)行會(huì)話操作的用戶數(shù)。網(wǎng)站的公式網(wǎng)站并發(fā)用戶數(shù)公式如下:
23、網(wǎng)站并發(fā)用戶數(shù)=RPS+SBC+ThinkingTime這里:RPS(RequestPerSecond每秒請(qǐng)求數(shù)(吞吐量SBC(SimultaneousBrowserconnections并發(fā)連接數(shù)ThinkingTime平均用戶思考時(shí)間(2響應(yīng)時(shí)間(Responsetimeorlatency響應(yīng)時(shí)間指的是客戶端發(fā)出請(qǐng)求到得到響應(yīng)的整個(gè)過程所經(jīng)歷的時(shí)間。例如從初始的請(qǐng)求到回應(yīng)下載的完成(刷新整個(gè)網(wǎng)頁(yè)之間的時(shí)間,參見圖7。圖7你可以測(cè)試在服務(wù)器上和在客戶端上的響應(yīng)時(shí)間:服務(wù)器端的響應(yīng)時(shí)間(Latencymeasuredattheserver這個(gè)時(shí)間指的是服務(wù)器完成請(qǐng)求執(zhí)行的時(shí)間,不包括客戶端到服
24、務(wù)器端的反應(yīng)(請(qǐng)求和反應(yīng)在網(wǎng)絡(luò)上的通訊時(shí)間客戶端的響應(yīng)時(shí)間(Latencymeasuredattheclient這個(gè)反應(yīng)時(shí)間等于客戶端的請(qǐng)求隊(duì)列加上服務(wù)器的反應(yīng)時(shí)間和網(wǎng)絡(luò)的反應(yīng)時(shí)間。你可以用各種各樣的方法來測(cè)試反應(yīng)時(shí)間。常用的有兩種方法:首字節(jié)響應(yīng)時(shí)間(度量首字節(jié)的響應(yīng)時(shí)間,指向服務(wù)器發(fā)送請(qǐng)求與接收到響應(yīng)的第一個(gè)字節(jié)之間的時(shí)間和末字節(jié)響應(yīng)時(shí)間(度量末字節(jié)的響應(yīng)時(shí)間,指向服務(wù)器發(fā)送請(qǐng)求與接收到響應(yīng)的最后一個(gè)字節(jié)之間的時(shí)間。通過測(cè)量響應(yīng)時(shí)間,您能知道您的應(yīng)用程序是否因?yàn)轫憫?yīng)時(shí)間太久以至于不能響應(yīng)請(qǐng)求。(3吞吐量(Throughput吞吐量是指單位時(shí)間內(nèi)系統(tǒng)處理的客戶請(qǐng)求的數(shù)量,直接體現(xiàn)軟件系統(tǒng)的性
25、能承載能力。一般來說,吞吐量由負(fù)載(如用戶的數(shù)量或使用什么類型的應(yīng)用程序來決定(舉個(gè)例子,下載文件比瀏覽網(wǎng)頁(yè)需要更高的吞吐量。如吞吐量用請(qǐng)求數(shù)/秒或頁(yè)面數(shù)/秒來衡量,從業(yè)務(wù)的角度,吞吐量也可以用訪問人數(shù)/天或處理的業(yè)務(wù)數(shù)/小時(shí)等單位來衡量。從網(wǎng)絡(luò)的角度來說,也可以用字節(jié)數(shù)/天等單位來考察網(wǎng)絡(luò)流量。(4資源利用率資源利用率是指系統(tǒng)資源的使用程度,比如服務(wù)器的CPU利用率、內(nèi)存利用率、磁盤利用率、網(wǎng)絡(luò)帶寬利用率等。1內(nèi)存(Memory內(nèi)存使用情況可能是系統(tǒng)性能中最重要的因素。如果系統(tǒng)“頁(yè)交換”頻繁,說明內(nèi)存不足?!绊?yè)交換”是使用稱為“頁(yè)面”的單位,將固定大小的代碼和數(shù)據(jù)塊從RAM移動(dòng)到磁盤的過程,
26、其目的是為了釋放內(nèi)存空間。盡管某些頁(yè)交換使操作系統(tǒng)能夠使用比實(shí)際更多的內(nèi)存,也是可以接受的,但頻繁的頁(yè)交換將降低系統(tǒng)性能。減少頁(yè)交換將顯著提高系統(tǒng)響應(yīng)速度。要監(jiān)視內(nèi)存不足的狀況,請(qǐng)從以下的參數(shù)指標(biāo)開始:CommittedBytesinUse(正在使用的字節(jié)的百分比:是Memory_CommittedBytes與Memory_CommitLimit之間的百分比比值,即已分配給物理RAM用于存儲(chǔ)或分配給頁(yè)面文件的虛擬內(nèi)存。AvailableBytes(可用物理內(nèi)存數(shù):顯示了物理內(nèi)存的剩余量。該值低于4MB,并且達(dá)到分鐘級(jí)時(shí),表明內(nèi)存不足PageFaults/sec(每秒鐘的缺頁(yè)數(shù):該數(shù)值反映了有多
27、少個(gè)請(qǐng)求的信息不在物理內(nèi)存中對(duì)應(yīng)的位置上。該值偶爾高時(shí),表明有線程競(jìng)爭(zhēng),持續(xù)走高時(shí),表示可能有內(nèi)存瓶頸。Pages/sec(顯示pageinput/sec和pageoutput/sec的總和:pageinput/sec反映的是物理內(nèi)存的短缺情況;pageoutput/sec顯示從物理內(nèi)存中調(diào)出的信息量,反映了計(jì)算機(jī)的繁忙程度。一般如果Page/sec持續(xù)高于幾百,那么您應(yīng)該進(jìn)一步研究頁(yè)交換活動(dòng)。有可能需要增加內(nèi)存,以減少換頁(yè)的需求(你可以把這個(gè)數(shù)字乘以4k就得到由此引起的硬盤數(shù)據(jù)流量。Page/sec的值很大也不一定就表明內(nèi)存有問題,而可能是運(yùn)行使用內(nèi)存映射文件的程序所致。由于過多的頁(yè)交換要使用大量的硬盤空間,因此有可能將導(dǎo)致將頁(yè)交換內(nèi)存不足與導(dǎo)致頁(yè)交換的磁盤瓶徑混淆。因此,在研究?jī)?nèi)存不足不太明顯的頁(yè)交換的原因時(shí),您必須跟蹤磁盤使用情況(在下面介紹計(jì)數(shù)器
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療銷售咨詢合同范本
- 供應(yīng)商尾款合同范本
- 北京拆遷合同范本
- 單人旅游合同范本
- 單位郊區(qū)租房合同范本
- 丟車包賠協(xié)議合同范本
- 單位電線更換維修合同范例
- 醫(yī)藥調(diào)查項(xiàng)目合同范本
- 出錢經(jīng)營(yíng)合同范本
- 農(nóng)業(yè)種植股合同范本
- 課件:認(rèn)識(shí)鏡頭語(yǔ)言1:運(yùn)鏡方式和常用的鏡頭術(shù)語(yǔ)
- (完整版)三年級(jí)上冊(cè)口算題卡1400道
- 淘寶客服轉(zhuǎn)正述職報(bào)告
- 提升電子商務(wù)的發(fā)展邏輯
- 提升醫(yī)療質(zhì)量減少醫(yī)療糾紛
- (完整)特種設(shè)備專項(xiàng)應(yīng)急預(yù)案
- 工程設(shè)計(jì)項(xiàng)目擬投入設(shè)計(jì)人員及設(shè)備
- 人教版五年級(jí)數(shù)學(xué)下冊(cè)課后作業(yè)設(shè)計(jì) 2.4質(zhì)數(shù)和合數(shù)(解析版)
- 高??蒲泄芾韻徝嬖噯栴}及回答
- 小學(xué)體質(zhì)測(cè)試標(biāo)準(zhǔn)
- 機(jī)床安全操作培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論