<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>

            軟件測試中性能調優(yōu)的過(guò)程解析

            發(fā)表于:2011-11-21來(lái)源:未知作者:領(lǐng)測軟件測試網(wǎng)采編點(diǎn)擊數: 標簽:性能測試
            性能調優(yōu)無(wú)疑是個(gè)龐大的話(huà)題,也是很多項目中非常重要的一環(huán),性能調優(yōu)的難做是眾所周知的,畢竟性能調優(yōu)涵蓋的面實(shí)在是太多了,在這篇文章中我們蜻蜓點(diǎn)水般的來(lái)看看性能調優(yōu)這項龐大的工程都有些什么過(guò)程,同時(shí)也看看這些過(guò)程中常見(jiàn)的一些做法。 確

              性能調優(yōu)無(wú)疑是個(gè)龐大的話(huà)題,也是很多項目中非常重要的一環(huán),性能調優(yōu)的難做是眾所周知的,畢竟性能調優(yōu)涵蓋的面實(shí)在是太多了,在這篇文章中我們蜻蜓點(diǎn)水般的來(lái)看看性能調優(yōu)這項龐大的工程都有些什么過(guò)程,同時(shí)也看看這些過(guò)程中常見(jiàn)的一些做法。

              確定性能調優(yōu)的目標

              性能調優(yōu),首先是要確定性能調優(yōu)的目標是什么,如果現在應用已經(jīng)滿(mǎn)足了需求,就沒(méi)必要去做性能調優(yōu)了,畢竟不經(jīng)過(guò)一個(gè)系統的過(guò)程,其實(shí)是無(wú)法確定你所做的性能調整是否真的調優(yōu)了性能,是否沒(méi)有造成應用中其他的問(wèn)題,所以確定性能目標是非常重要的,在定義性能目標的時(shí)候通常這么定義的呢:

              1、最大并發(fā)數

              2、Quality of Service

              服務(wù)的質(zhì)量,在軟件系統方面我們認為主要表現在請求的出錯率,系統的load等。

              3、最長(cháng)響應時(shí)間

              對于任何請求所能承受的最大響應時(shí)間。

              4、TPS

              每秒需要支持的最大事務(wù)數,最典型的指標是:“某頁(yè)面最高需要支撐每秒7000次的訪(fǎng)問(wèn)次數”。

              例如一個(gè)web系統,需要定義出來(lái)的目標是:

              并發(fā)目標:最高支撐200并發(fā);

              QoS:出錯率須控制在萬(wàn)分之一,系統的load最高只能到達10;

              TPS:每秒完成7000次請求的處理;

              最大響應時(shí)間:最長(cháng)允許的響應時(shí)間為5秒。

              至于請求的平均響應時(shí)間這些就不在性能調優(yōu)目標中定義,因為要達到TPS的要求,響應時(shí)間是必須要達到一個(gè)級別的,而且響應時(shí)間隨著(zhù)高并發(fā)是會(huì )出現劣化的。

              當然,還可以把性能指標定到更為細節,例如某個(gè)方法的TPS在100并發(fā)時(shí)需要達到多少。

              在確定好了性能目標后,重要的就是如何來(lái)測量系統的性能了。

              測量系統性能

              對于新系統而言,需要評估出其正式運行時(shí)的數據量的增長(cháng)情況;而對于已運行的系統,則需要根據監控獲取到系統的運行數據(例如高峰并發(fā)數、系統的響應速度情況、系統的load、網(wǎng)絡(luò )流量、每類(lèi)請求在總的請求中所占的百分比等)。

              對于新系統而言,要評估出具體的性能相對來(lái)說(shuō)稍微好做一點(diǎn),因為此時(shí)系統通常較為單純,數據量的增長(cháng)也不可能是一夜之間增長(cháng)的,因此基本可以按照一種正常的方法在測試環(huán)境評估出其正式運行的性能。

              而對于已運行的系統而言,則較為麻煩,因為通常來(lái)講要在測試環(huán)境中模擬正式運行環(huán)境基本是不太可能的,因此這個(gè)時(shí)候通常要采取一些模擬的方法或更高壓力的方法來(lái)盡量更為準確的評估出系統的性能。

              在測試系統性能時(shí),通??刹捎玫姆椒ㄓ校?/p>

              1、單元測試;

              可借助單元測試來(lái)測試某個(gè)請求的性能;

              2、壓力測試;

              壓力測試無(wú)疑是測量系統性能中最常采用的方式,根據定義的性能目標對系統進(jìn)行壓力測試,以確定系統是否滿(mǎn)足性能要求,同時(shí)也可以根據壓力測試的結果來(lái)分析系統的瓶頸,進(jìn)而進(jìn)行對應的調優(yōu),可用于做壓力測試的工具還是不少的,像loadrunner、jmeter等等,不過(guò)壓力測試這個(gè)話(huà)題實(shí)在太大了,不在這里展開(kāi)去講了,不過(guò)我也不怎么懂就是,呵呵。

              分析系統性能瓶頸

              根據測量系統性能的結果,多數是可以分析出系統性能的瓶頸,同時(shí)還可以結合像jvm堆棧、jprofiler、系統日志等來(lái)進(jìn)行進(jìn)一步的確定,另外也可以根據性能調優(yōu)人員的經(jīng)驗,例如可以去了解開(kāi)發(fā)人員是否采用了不適合的數據結構等。

              簡(jiǎn)單說(shuō)一個(gè)線(xiàn)程分析的例子:

              借助kill -3 pid來(lái)獲取到目前jvm的線(xiàn)程堆棧信息,特別需要關(guān)注的是里面wait for monitor這樣的線(xiàn)程,這種線(xiàn)程是指在等待鎖的線(xiàn)程,等待一兩分鐘后再次kill -3 pid,看看這些wait for monitor的線(xiàn)程的變化情況,這對于分析線(xiàn)程中是否存在不合理的競爭過(guò)高的鎖的分析是非常重要的。

              這一步無(wú)疑也是性能調優(yōu)過(guò)程中最難的一步了,分析系統性能瓶頸這種基本只能結合實(shí)際例子來(lái)講了,正確在后續抽取一兩個(gè)例子來(lái)進(jìn)行講解。

              性能調優(yōu)

              在分析出系統性能的瓶頸后,其實(shí)這一步相對來(lái)說(shuō)還好做些,當然,需要建立在對軟硬件知識都有很好的深入了解的基礎上,在這里列舉一些比較常見(jiàn)的性能調優(yōu)的手段,多數是抄來(lái)或google來(lái)的,自己在這方面的經(jīng)驗還不多,希望大家多加指點(diǎn)。

              Redhat Linux內核

              Redhat linux內核版本升級到2.6,2.6和2.4的差別還是很多的,例如對epoll的支持、NPTL的采用;epoll的支持對于java而言也是很重要的,在高并發(fā)的情況下nio是否采用epoll還是有挺大的差別的;而NPTL的采用對于多線(xiàn)程程序而言更是極為重要。

              另外需要關(guān)注像linux的File Handles是多少、network buffer是多少、MTU是多少、Memory Page size是多少等等。

              JVM

              JVM調優(yōu)的文章相對來(lái)說(shuō)比較多,大家需要了解的主要是-Xms/-Xmx、并行GC、-XX:MaxPermSize/-XX:MaxNewSize、-XX:ThreadStackSize、NIO采用epoll等等。

              簡(jiǎn)單的列這兩個(gè),其實(shí)性能調優(yōu)的手段還有非常的多,例如簡(jiǎn)單的增加CPU、買(mǎi)更快速度的硬盤(pán)、增加內存、提升網(wǎng)絡(luò )帶寬等這些從硬件角度下手的方式,還有像數據庫調優(yōu)、應用服務(wù)器調優(yōu)等等。

            原文轉自:http://kjueaiud.com

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>