性能測(cè)試

|—1杖小、性能測(cè)試簡(jiǎn)介

指通過(guò)自動(dòng)化的測(cè)試工具]模擬多種正常、[峰值]以及[異常負(fù)載條件來(lái)對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試

|—1.1、對(duì)性能的認(rèn)識(shí)

從用戶的角度:


從開發(fā)的角度:

從系統(tǒng)管理員的角度:


那么贞盯?測(cè)試應(yīng)該關(guān)注哪些呢?

測(cè)試人員通常是做為軟件質(zhì)量控制的一個(gè)角色沪饺,不僅僅是找bug躏敢,需要對(duì)整個(gè)軟件的質(zhì)量負(fù)責(zé),性能也屬于質(zhì)量的一部分整葡,因此測(cè)試人員眼中的性能應(yīng)該是全面的件余,考慮的東西也需要全面:

? - 測(cè)試人員需要考慮全面的性能,包括[用戶掘宪、開發(fā)蛾扇、管理員]等各個(gè)視角的性能。

? - 測(cè)試人員在做性能測(cè)試時(shí)除開要關(guān)注表面的現(xiàn)象如[響應(yīng)時(shí)間]魏滚,也需要關(guān)注本質(zhì)镀首,比如用戶看不到的[服務(wù)器資料利用率],架構(gòu)設(shè)計(jì)是否合理鼠次?代碼是否合理等方方面面更哄。


|—2芋齿、目的

? - 1. 系統(tǒng)的穩(wěn)定/可靠運(yùn)營(yíng)---長(zhǎng)時(shí)間、高負(fù)載測(cè)試下交易成功率成翩、資源穩(wěn)定性觅捆。

? - 2. 成本的優(yōu)化配置--最優(yōu)CPU數(shù)量、內(nèi)存數(shù)量麻敌、服務(wù)器數(shù)量栅炒、專線帶寬

? - 3. 給用戶帶來(lái)更好的體驗(yàn),運(yùn)行速度快(平均響應(yīng)時(shí)間)术羔,流暢(占用我們的硬件資源少)

? - 4. 判斷目前系統(tǒng)的性能瓶頸赢赊,一到關(guān)鍵時(shí)候比較卡,一般是人多的時(shí)候比較卡(并發(fā))

? - 5. 系統(tǒng)應(yīng)用能夠適應(yīng)未來(lái)的業(yè)務(wù)增長(zhǎng)


|—3级历、性能測(cè)試工具

? - 1. JMeter

? - 2. LR(LoadRunner)

? - 3. postman

? - 4. SoupUI


|—4释移、性能測(cè)試的分類

? - 1. 并發(fā)測(cè)試

? - 2. 壓力測(cè)試(強(qiáng)度測(cè)試)

? - 3. 疲勞測(cè)試

? - 4. 負(fù)載測(cè)試

? - 5. 配置測(cè)試

? - 6. 可靠性測(cè)試

|—4.1、并發(fā)測(cè)試

并發(fā)測(cè)試就是模擬一群人同一時(shí)間做事并發(fā)測(cè)試就是對(duì)被測(cè)系統(tǒng)的并發(fā)處理能力進(jìn)行考察的一種測(cè)試手段(可以是某個(gè)功能模塊或數(shù)據(jù)記錄)一般都是看在絕對(duì)并發(fā)的情況下寥殖,系統(tǒng)能承載多大的并發(fā)量玩讳,是否存在死鎖或其者他性能問(wèn)題〗拦保或者在一定的并發(fā)量下熏纯,系統(tǒng)的響應(yīng)時(shí)間是否是可接受的。

特點(diǎn):

- 1编曼、這種性能測(cè)試方法主要關(guān)注系統(tǒng)可能存在的并發(fā)問(wèn)題豆巨,例如系統(tǒng)中的內(nèi)存泄漏、線程鎖和資源爭(zhēng)用方面的問(wèn)題掐场。

- 2往扔、這種性能測(cè)試方法可以在開發(fā)的各個(gè)階段使用需要相關(guān)的測(cè)試工具的配合和支持。也就是說(shuō)熊户,這種測(cè)試關(guān)注點(diǎn)是多個(gè)用戶同時(shí)(并發(fā))對(duì)一個(gè)模塊或操作進(jìn)行加壓萍膛。

- 1、絕對(duì)并發(fā):

一種是嚴(yán)格意義上的并發(fā)嚷堡,即所有的用戶在同一時(shí)刻做同一件事或操作蝗罗,這種操作一般指做同一類型的業(yè)務(wù)。比如蝌戒,所有用戶同一時(shí)刻做并發(fā)登陸串塑,同一時(shí)刻做表單提交。

比如:12306春運(yùn)期間的放票北苟,一到放票開始桩匪,N多的用戶在同一時(shí)間點(diǎn)對(duì)服務(wù)器發(fā)起買票的請(qǐng)求。比如8:00放票時(shí)段友鼻,有100萬(wàn)用戶對(duì)12306發(fā)起了買票的請(qǐng)求傻昙。

- 2闺骚、非絕對(duì)并發(fā):

另外一種并發(fā)是廣義范圍的并發(fā),這種并發(fā)與前一種并發(fā)的區(qū)別是妆档,盡管多個(gè)用戶對(duì)系統(tǒng)發(fā)出了請(qǐng)求或者進(jìn)行了操作僻爽,但是這些請(qǐng)求或都操作可以是相同的,也可以是不同的贾惦。比如胸梆,在同一時(shí)刻有用戶在登錄,有用戶在提交表單须板。在一定的并發(fā)量下乳绕,***系統(tǒng)的響應(yīng)時(shí)間是否是可接受的

|—4.2、壓力測(cè)試

壓力測(cè)試是在接近用戶承載量極限以下一些(還不足以把系統(tǒng)壓垮的用戶量)逼纸,較長(zhǎng)時(shí)間不間斷執(zhí)行的性能測(cè)試,是檢查系統(tǒng)穩(wěn)定性济蝉,系統(tǒng)性能瓶頸的一種常用場(chǎng)景杰刽。

壓測(cè)時(shí)間,一般場(chǎng)景都運(yùn)行10-15分鐘王滤。如果是疲勞測(cè)試贺嫂,可以壓一天或一周,根據(jù)實(shí)際情況來(lái)定雁乡。

壓力測(cè)試分兩種場(chǎng)景:

- 一種是單場(chǎng)景第喳,壓一個(gè)接口的

- 第二種是混合場(chǎng)景,多個(gè)有關(guān)聯(lián)的接口踱稍。

|—4.3曲饱、疲勞測(cè)試

疲勞測(cè)試是采用系統(tǒng)穩(wěn)定運(yùn)行情況下能夠支持的最大[并發(fā)用戶數(shù)],持續(xù)執(zhí)行一段時(shí)間業(yè)務(wù)珠月,通過(guò)綜合分析交易執(zhí)行指標(biāo)和資源監(jiān)控指標(biāo)來(lái)確定系統(tǒng)處理最大工作量強(qiáng)度性能的過(guò)程扩淀。

一般情況下以服務(wù)器能夠正常穩(wěn)定響應(yīng)請(qǐng)求的最大[并發(fā)用戶數(shù)]進(jìn)行一定時(shí)間的疲勞測(cè)試,獲取交易執(zhí)行指標(biāo)數(shù)據(jù)和監(jiān)控?cái)?shù)據(jù)啤挎。如出現(xiàn)錯(cuò)誤導(dǎo)致測(cè)試不能成功執(zhí)行驻谆,則及時(shí)調(diào)整測(cè)試指標(biāo),例如降低用戶數(shù)庆聘、縮短測(cè)試周期等胜臊。還有一種情況的疲勞測(cè)試是對(duì)當(dāng)前系統(tǒng)性能的評(píng)估,用系統(tǒng)正常業(yè)務(wù)情況下[并發(fā)用戶數(shù)]為基礎(chǔ)伙判,進(jìn)行一定時(shí)間的疲勞測(cè)試象对。

|—4.4、負(fù)載測(cè)試

就是一批一批的加用戶澳腹,待到當(dāng)前在線用戶執(zhí)行穩(wěn)定后织盼,再加下一批的用戶杨何,像這樣不停的持續(xù)加壓,直至系統(tǒng)性能明顯下降或系統(tǒng)崩潰為止沥邻。是測(cè)試系統(tǒng)用戶上限危虱,查找系統(tǒng)性能瓶頸的重要手段。通常在還不知道系統(tǒng)能承載多大業(yè)務(wù)量的情況下唐全,為找到用戶承載量極限或?yàn)榱丝焖俣ㄎ幌到y(tǒng)性能瓶頸時(shí)埃跷,會(huì)采用此種方式進(jìn)行測(cè)試。

特點(diǎn):

- 1邮利、這種性能測(cè)試方法的主要目的是找到系統(tǒng)處理能力的極限弥雹。

- 2、這種性能測(cè)試方法需要在給定的測(cè)試環(huán)境下進(jìn)行延届,通常也需要考慮被測(cè)試系統(tǒng)的業(yè)務(wù)壓力量和典型場(chǎng)景剪勿、使得測(cè)試結(jié)果具有業(yè)務(wù)上的意義。

- 3方庭、這種性能測(cè)試方法一般用來(lái)了解系統(tǒng)的性能容量厕吉,或是配合性能調(diào)優(yōu)來(lái)使用。

|—4.5械念、配置測(cè)試

配置測(cè)試方法通過(guò)對(duì)被測(cè)系統(tǒng)的軟\硬件環(huán)境的調(diào)整头朱,了解各種不同對(duì)系統(tǒng)的性能影響的程度,從而找到系統(tǒng)各項(xiàng)資源的最優(yōu)分配原則龄减。

也就是說(shuō)项钮,這種測(cè)試關(guān)注點(diǎn)是“微調(diào)”,通過(guò)對(duì)軟硬件的不段調(diào)整希停,找出這他們的最佳狀態(tài)烁巫,使系統(tǒng)達(dá)到一個(gè)最強(qiáng)的狀態(tài)。

特點(diǎn):

- 1脖苏、這種性能測(cè)試方法的主要目的是了解各種不同因素對(duì)系統(tǒng)性能影響的程度程拭,從而判斷出最值得進(jìn)行的調(diào)優(yōu)操作。

- 2棍潘、這種性能測(cè)試方法一般在對(duì)系統(tǒng)性能狀況有初步了解后進(jìn)行恃鞋。

- 3、這種性能測(cè)試方法一般用于性能調(diào)優(yōu)和規(guī)劃能力亦歉。

|—4.6恤浪、可靠性測(cè)試

在給系統(tǒng)加載一定業(yè)務(wù)壓力的情況下,使系統(tǒng)運(yùn)行一段時(shí)間肴楷,以此檢測(cè)系統(tǒng)是否穩(wěn)定水由。

也就是說(shuō),這種測(cè)試的關(guān)注點(diǎn)是“穩(wěn)定”赛蔫,不需要給系統(tǒng)太大的壓力砂客,只要系統(tǒng)能夠長(zhǎng)期處于一個(gè)穩(wěn)定的狀態(tài)泥张。

特點(diǎn):

- 1、這種性能測(cè)試方法的主要目的是驗(yàn)證是否支持長(zhǎng)期穩(wěn)定的運(yùn)行鞠值。

- 2媚创、這種性能測(cè)試方法需要在壓力下持續(xù)一段時(shí)間的運(yùn)行。(2~3天)

- 3彤恶、測(cè)試過(guò)程中需要關(guān)注系統(tǒng)的運(yùn)行狀況钞钙。

備注:一般企業(yè)中作得比價(jià)多是并發(fā)測(cè)試,壓力測(cè)試声离,根據(jù)具體需求場(chǎng)景芒炼,有必要的話也會(huì)適當(dāng)?shù)淖饕恍┴?fù)載測(cè)試,疲勞測(cè)試术徊。

和負(fù)載測(cè)試的概念比較接近的是壓力測(cè)試本刽。通俗地講,壓力測(cè)試是為了發(fā)現(xiàn)在多大并發(fā)壓力下系統(tǒng)的性能會(huì)變得不可接受赠涮,或者出現(xiàn)性能拐點(diǎn)(崩潰)的情況盅安。在加壓策略上,壓力測(cè)試會(huì)對(duì)被測(cè)系統(tǒng)逐步加壓世囊,在加壓的過(guò)程中考察系統(tǒng)性能指標(biāo)的走勢(shì)情況,最終找出系統(tǒng)在出現(xiàn)性能拐點(diǎn)時(shí)的并發(fā)用戶數(shù)窿祥,也就是系統(tǒng)支持的最大并發(fā)用戶數(shù)株憾。

最后再說(shuō)下疲勞強(qiáng)度測(cè)試。其實(shí)疲勞強(qiáng)度測(cè)試的加壓策略跟負(fù)載測(cè)試也很接近晒衩,都是對(duì)系統(tǒng)模擬出系統(tǒng)能承受的最大業(yè)務(wù)負(fù)載量嗤瞎,差異在于,疲勞強(qiáng)度測(cè)試更關(guān)注系統(tǒng)在長(zhǎng)時(shí)間運(yùn)行情況下系統(tǒng)性能指標(biāo)的變化情況听系,例如贝奇,系統(tǒng)在運(yùn)行一段時(shí)間后,是否會(huì)出現(xiàn)事務(wù)處理失敗靠胜、響應(yīng)時(shí)間增長(zhǎng)掉瞳、業(yè)務(wù)吞吐量降低、CPU/內(nèi)存資源增長(zhǎng)等問(wèn)題浪漠。


|—5陕习、性能測(cè)試指標(biāo)

從維度上劃分,性能指標(biāo)主要分為兩大類址愿,分別是業(yè)務(wù)性能指標(biāo)和系統(tǒng)資源性能指標(biāo)该镣。

|—5.1、業(yè)務(wù)性能指標(biāo)可以直觀地反映被測(cè)系統(tǒng)的實(shí)際性能狀況响谓,常用的指標(biāo)項(xiàng)有:

?  1.并發(fā)用戶數(shù)

?  2.事務(wù)吞吐率(TPS/RPS)

?  3.事務(wù)平均響應(yīng)時(shí)間

?  4.事務(wù)成功率

從以下幾個(gè)方面來(lái)評(píng)定指標(biāo)是否達(dá)標(biāo)

- ①.給出產(chǎn)品性能的主要指標(biāo)损合,如在100000記錄中查詢一個(gè)特定數(shù)據(jù)的時(shí)間為0.5秒省艳;

- ②.以某個(gè)已發(fā)布的版本為基線,如比上一個(gè)版本的性能提高30-50%嫁审;

- ③.和競(jìng)爭(zhēng)對(duì)手的同類產(chǎn)品比較跋炕。

|—5.2、服務(wù)器的性能指標(biāo)——nmon工具

- ①.CPU利用率土居;

- ②.內(nèi)存占用率枣购;? 考慮是否存在內(nèi)存泄漏的情況。

- ③.磁盤I/O 擦耀;

- ④.網(wǎng)絡(luò)?? 網(wǎng)絡(luò)帶寬


|—6棉圈、性能測(cè)試專業(yè)術(shù)語(yǔ)

性能測(cè)試要求的指標(biāo):性能測(cè)試需求上有說(shuō)明,SE規(guī)定了要我們做哪些業(yè)務(wù)的性能眷蜓,像:登錄分瘾,注冊(cè),下單吁系,查詢德召,添加購(gòu)物車等,項(xiàng)目組只要求我們做了并發(fā)汽纤,壓測(cè)這塊上岗。

|—6.1、并發(fā)數(shù)

一蕴坪、經(jīng)典公式1:

?? 一般來(lái)說(shuō)肴掷,利用以下經(jīng)驗(yàn)公式進(jìn)行估算系統(tǒng)的平均并發(fā)用戶數(shù)和峰值數(shù)據(jù)

? 1)平均并發(fā)用戶數(shù)為 C = nL/T

? 2)并發(fā)用戶數(shù)峰值 C‘ = C + 3*根號(hào)C

?? ? C是平均并發(fā)用戶數(shù),n是login session的數(shù)量背传,L是login session的平均長(zhǎng)度呆瞻,T是值考察的時(shí)間長(zhǎng)度

?? ? C’是并發(fā)用戶數(shù)峰值

舉例1,假設(shè)系統(tǒng)A径玖,該系統(tǒng)有3000個(gè)用戶痴脾,平均每天大概有400個(gè)用戶要訪問(wèn)該系統(tǒng)(可以從系統(tǒng)日志從獲得),對(duì)于一個(gè)典型用戶來(lái)說(shuō)梳星,一天之內(nèi)用戶從登陸到退出的平均時(shí)間為4小時(shí)赞赖,而在一天之內(nèi),用戶只有在8小時(shí)之內(nèi)會(huì)使用該系統(tǒng)冤灾。

平均并發(fā)用戶數(shù)為 C = 400*4/8=200

并發(fā)用戶數(shù)峰值? C`= 200 + 3*根號(hào)200=243

舉例2薯定, 某公司為其170000名員工設(shè)計(jì)了一個(gè)薪酬系統(tǒng),員工可進(jìn)入該系統(tǒng)查詢自己的薪酬信息瞳购,但并不是每個(gè)人都會(huì)用這個(gè)系統(tǒng)话侄,假設(shè)只有50%的人會(huì)定期用該系統(tǒng),這些人里面有70%是在每個(gè)月的最后一周使用一次該系統(tǒng),且平均使用系統(tǒng)時(shí)間為5分鐘年堆。


? 則一個(gè)月最后一周的平均并發(fā)用戶數(shù)為(朝九晚五):

? n = 170000*0.5*0.7/5 = 11900

? C= 11900*5/60/8 = 124

|—6.2吞杭、響應(yīng)時(shí)間(90%用戶的平均響應(yīng)時(shí)間)

0.幾秒算好的,1.幾秒都算比較好的变丧,<=3秒 都算正常芽狗,>3秒,分析下痒蓬。超過(guò)5s以上性能是不達(dá)標(biāo)童擎。

|—6.3、吞吐率

100/sec

吞吐量計(jì)算為:F = Vu * R / T 單位為個(gè)/s? ?? 500 * 1/12s = 41.6請(qǐng)求數(shù)/sec? 1000 * 1/21s = 47.6/sec

|—6.4攻晒、吞吐量

指在一次性能測(cè)試過(guò)程中網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)量的總和(單位應(yīng)該KB),也可以這樣說(shuō)在單次業(yè)務(wù)中顾复,客戶端與服務(wù)器端進(jìn)行的數(shù)據(jù)交互總量;對(duì)交互式應(yīng)用來(lái)說(shuō)鲁捏,吞吐量指標(biāo)反映服務(wù)器承受的壓力芯砸,容量規(guī)劃的測(cè)試中,吞吐量是重點(diǎn)關(guān)注的指標(biāo)给梅,它能夠說(shuō)明系統(tǒng)級(jí)別的負(fù)載能力假丧,另外,在性能調(diào)優(yōu)過(guò)程中动羽,吞吐量指標(biāo)也有重要的價(jià)值包帚;

并不是吞吐量越高越高,一個(gè)服務(wù)器的性能运吓,要從多個(gè)方面去考慮:90%用戶的平均響應(yīng)時(shí)間婴噩,錯(cuò)誤率,吞吐量/吞吐量羽德,CPU,內(nèi)存迅办,磁盤IO,網(wǎng)絡(luò)的占用情況宅静,還有服務(wù)器的配置。

吞吐量/傳輸時(shí)間站欺,即單位時(shí)間內(nèi)網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)量姨夹,也可以指單位時(shí)間內(nèi)處理客戶請(qǐng)求數(shù)量,它是衡量網(wǎng)絡(luò)性能的重要指標(biāo)矾策。

通常情況下磷账,吞吐率用“字節(jié)數(shù)/秒”來(lái)衡量,當(dāng)然贾虽,也可以用“請(qǐng)求數(shù)/秒”和“頁(yè)面數(shù)/秒”來(lái)衡量逃糟;

吞吐量/率和負(fù)載之間的關(guān)系:

①上升階段:吞吐量隨著負(fù)載的增加而增加,吞吐量和負(fù)載成正比;

②平穩(wěn)階段:吞吐量隨著負(fù)載的增加而保持穩(wěn)定绰咽,無(wú)太大變化或波動(dòng)菇肃;

③下降階段:吞吐量隨著負(fù)載的增加而下降,吞吐量和負(fù)載成反比取募;

總結(jié):吞吐量/率干不過(guò)負(fù)載K霭!玩敏!


|—6.5斗忌、內(nèi)存泄漏(memory leak)

是指程序在申請(qǐng)內(nèi)存后,無(wú)法釋放已申請(qǐng)的內(nèi)存空間旺聚,導(dǎo)致系統(tǒng)無(wú)法及時(shí)回收內(nèi)存并且分配給其他進(jìn)程使用织阳。通常少次數(shù)的內(nèi)存無(wú)法及時(shí)回收并不會(huì)到程序造成什么影響,但是如果在內(nèi)存本身就比較少獲取多次導(dǎo)致內(nèi)存無(wú)法正撤回收時(shí)陈哑,就會(huì)導(dǎo)致內(nèi)存不夠用,最終導(dǎo)致內(nèi)存溢出伸眶。

|—6.6惊窖、內(nèi)存溢出(out of memory):OOM

指程序申請(qǐng)內(nèi)存時(shí),沒(méi)有足夠的內(nèi)存供申請(qǐng)者使用厘贼,或者說(shuō)界酒,給了你一塊存儲(chǔ)int類型數(shù)據(jù)的存儲(chǔ)空間,但是你卻存儲(chǔ)long類型的數(shù)據(jù)嘴秸,那么結(jié)果就是內(nèi)存不夠用毁欣,此時(shí)就會(huì)報(bào)錯(cuò)OOM,即所謂的內(nèi)存溢出,簡(jiǎn)單來(lái)說(shuō)就是自己所需要使用的空間比我們擁有的內(nèi)存大內(nèi)存不夠使用所造成的內(nèi)存溢出岳掐。

|—6.7凭疮、內(nèi)存溢出原因

1.內(nèi)存中【加載的數(shù)據(jù)量過(guò)于龐大】,如一次從數(shù)據(jù)庫(kù)取出過(guò)多數(shù)據(jù)串述;

2.集合類中【有對(duì)對(duì)象的引用执解,使用完后未清空】,使得JVM不能回收纲酗;

3.代碼中存在死循環(huán)或循環(huán)產(chǎn)生過(guò)多重復(fù)的對(duì)象實(shí)體衰腌;

4.使用的第三方軟件中的BUG;

5.啟動(dòng)參數(shù)內(nèi)存值設(shè)定的過(guò)小

|—6.8觅赊、內(nèi)存溢出的解決方案:

第一步右蕊,修改JVM啟動(dòng)參數(shù),直接增加內(nèi)存吮螺。(-Xms饶囚,-Xmx參數(shù)一定不要忘記加帕翻。)

第二步,檢查錯(cuò)誤日志坯约,查看“OutOfMemory”錯(cuò)誤前是否有其 它異承苎剩或錯(cuò)誤。

第三步闹丐,對(duì)代碼進(jìn)行走查和分析横殴,找出可能發(fā)生內(nèi)存溢出的位置。

|—6.9卿拴、重點(diǎn)排查以下幾點(diǎn):

2.1.檢查對(duì)數(shù)據(jù)庫(kù)查詢中衫仑,是否有一次獲得全部數(shù)據(jù)的查詢。一般來(lái)說(shuō)堕花,如果一次取十萬(wàn)條記錄到內(nèi)存文狱,就可能引起內(nèi)存溢出。這個(gè)問(wèn)題比較隱蔽缘挽,在上線前瞄崇,數(shù)據(jù)庫(kù)中數(shù)據(jù)較少,不容易出問(wèn)題壕曼,上線后苏研,數(shù)據(jù)庫(kù)中數(shù)據(jù)多了,一次查詢就有可能引起內(nèi)存溢出腮郊。因此對(duì)于數(shù)據(jù)庫(kù)查詢盡量采用分頁(yè)的方式查詢摹蘑。

2.檢查代碼中是否有死循環(huán)或遞歸調(diào)用。

3.檢查是否有大循環(huán)重復(fù)產(chǎn)生新對(duì)象實(shí)體轧飞。

4.檢查對(duì)數(shù)據(jù)庫(kù)查詢中衅鹿,是否有一次獲得全部數(shù)據(jù)的查詢。一般來(lái)說(shuō)过咬,如果一次取十萬(wàn)條記錄到內(nèi)存大渤,就可能引起內(nèi)存溢出。這個(gè)問(wèn)題比較隱蔽掸绞,在上線前泵三,數(shù)據(jù)庫(kù)中數(shù)據(jù)較少,不容易出問(wèn)題集漾,上線后,數(shù)據(jù)庫(kù)中數(shù)據(jù)多了砸脊,一次查詢就有可能引起內(nèi)存溢出具篇。因此對(duì)于數(shù)據(jù)庫(kù)查詢盡量采用分頁(yè)的方式查詢。

5.檢查L(zhǎng)ist凌埂、MAP等集合對(duì)象是否有使用完后驱显,未清除的問(wèn)題。List、MAP等集合對(duì)象會(huì)始終存有對(duì)對(duì)象的引用埃疫,使得這些對(duì)象不能被GC回收伏恐。

第四步,使用內(nèi)存查看工具動(dòng)態(tài)查看內(nèi)存使用情況


|—7栓霜、性能測(cè)試流程

一翠桦、準(zhǔn)備工作

1、首先要保證系統(tǒng)基礎(chǔ)功能驗(yàn)證通過(guò)

性能測(cè)試在什么階段適合實(shí)施胳蛮?切入點(diǎn)很重要销凑!一般而言,只有在系統(tǒng)基礎(chǔ)功能測(cè)試驗(yàn)證完成仅炊、系統(tǒng)趨于穩(wěn)定的情況下斗幼,才會(huì)進(jìn)行性能測(cè)試,否則性能測(cè)試是無(wú)意義的抚垄。

2蜕窿、然后就是選擇好性能測(cè)試工具

綜合系統(tǒng)設(shè)計(jì)、工具成本呆馁、測(cè)試團(tuán)隊(duì)的技能來(lái)考慮桐经,選擇合適的測(cè)試工具,最起碼應(yīng)該滿足一下幾點(diǎn):

①支持對(duì)web(這里以web系統(tǒng)為例)系統(tǒng)的性能測(cè)試智哀,支持http和https協(xié)議次询;

②工具運(yùn)行在Windows平臺(tái)上;

③支持對(duì)webserver瓷叫、前端屯吊、數(shù)據(jù)庫(kù)的性能計(jì)數(shù)器進(jìn)行監(jiān)控;

3摹菠、然后就是對(duì)預(yù)先的業(yè)務(wù)場(chǎng)景分析

為了對(duì)系統(tǒng)性能建立直觀上的認(rèn)識(shí)和分析盒卸,應(yīng)對(duì)系統(tǒng)較重要和常用的業(yè)務(wù)場(chǎng)景模塊進(jìn)行分析,針對(duì)性的進(jìn)行分析次氨,以對(duì)接下來(lái)的測(cè)試計(jì)劃設(shè)計(jì)進(jìn)行準(zhǔn)備蔽介。

二、測(cè)試計(jì)劃

測(cè)試計(jì)劃階段最重要的是分析用戶場(chǎng)景煮寡,確定系統(tǒng)性能目標(biāo)虹蓄。

1、性能測(cè)試領(lǐng)域分析(也就是確定測(cè)試范圍幸撕,是需要做哪方面的性能測(cè)試薇组,并發(fā)測(cè)試,壓力測(cè)試坐儿,疲勞測(cè)試律胀,負(fù)載測(cè)試)

根據(jù)對(duì)項(xiàng)目背景宋光,業(yè)務(wù)的了解,確定本次性能測(cè)試要解決的問(wèn)題點(diǎn)炭菌;是測(cè)試系統(tǒng)能否滿足實(shí)際運(yùn)行時(shí)的需要罪佳,還是目前的系統(tǒng)在哪些方面制約系統(tǒng)性能的表現(xiàn),或者黑低,哪些系統(tǒng)因素導(dǎo)致

系統(tǒng)無(wú)法跟上業(yè)務(wù)發(fā)展赘艳?確定測(cè)試領(lǐng)域,然后具體問(wèn)題具體分析投储。

2第练、用戶場(chǎng)景剖析和業(yè)務(wù)建模

根據(jù)對(duì)系統(tǒng)業(yè)務(wù)、用戶活躍時(shí)間玛荞、訪問(wèn)頻率娇掏、場(chǎng)景交互等各方面的分析,整理一個(gè)業(yè)務(wù)場(chǎng)景表勋眯,當(dāng)然其中最好對(duì)用戶操作場(chǎng)景婴梧、步驟進(jìn)行詳細(xì)的描述,為測(cè)試腳本開發(fā)提供依據(jù)客蹋。

3塞蹭、確定性能目標(biāo)(也就是確定各個(gè)用戶場(chǎng)景的性能指標(biāo))

前面已經(jīng)確定了本次性能測(cè)試的應(yīng)用領(lǐng)域,接下來(lái)就是針對(duì)具體的領(lǐng)域關(guān)注點(diǎn)讶坯,確定性能目標(biāo)(指標(biāo))番电;其中需要和其他業(yè)務(wù)部門進(jìn)行溝通協(xié)商,以及結(jié)合當(dāng)前系統(tǒng)的響應(yīng)時(shí)間等數(shù)據(jù)辆琅,確定

最終我們需要達(dá)到的響應(yīng)時(shí)間和系統(tǒng)資源使用率等目標(biāo)漱办;比如:

①登錄請(qǐng)求到登錄成功的頁(yè)面響應(yīng)時(shí)間不能超過(guò)2秒;

②報(bào)表審核提交的頁(yè)面響應(yīng)時(shí)間不能超過(guò)5秒婉烟;

③文件的上傳娩井、下載頁(yè)面響應(yīng)時(shí)間不超過(guò)8秒;

④服務(wù)器的CPU平均使用率小于70%似袁,內(nèi)存使用率小于75%洞辣;

⑤各個(gè)業(yè)務(wù)系統(tǒng)的響應(yīng)時(shí)間和服務(wù)器資源使用情況在不同測(cè)試環(huán)境下,各指標(biāo)隨負(fù)載變化的情況等昙衅;

4扬霜、制定測(cè)試計(jì)劃的實(shí)施時(shí)間

預(yù)設(shè)本次性能測(cè)試各子模塊的起止時(shí)間,產(chǎn)出而涉,參與人員等等著瓶。

三潘酗、測(cè)試腳本設(shè)計(jì)與開發(fā)

性能測(cè)試中蚓挤,測(cè)試腳本設(shè)計(jì)與開發(fā)占據(jù)了很大的時(shí)間比重桐早。

1拂苹、測(cè)試環(huán)境設(shè)計(jì)

本次性能測(cè)試的目標(biāo)是需要驗(yàn)證系統(tǒng)在實(shí)際運(yùn)行環(huán)境中的性能外谭羔,還需要考慮到不同的硬件配置是否會(huì)是制約系統(tǒng)性能的重要因素华糖!因此在測(cè)試環(huán)境中,需要部署多個(gè)不同的測(cè)試環(huán)境瘟裸,

在不同的硬件配置上檢查應(yīng)用系統(tǒng)的性能客叉,并對(duì)不同配置下系統(tǒng)的測(cè)試結(jié)果進(jìn)行分析,得出最優(yōu)結(jié)果(最適合當(dāng)前系統(tǒng)的配置)话告。

這里所說(shuō)的配置大概是如下幾類:

①數(shù)據(jù)庫(kù)服務(wù)器

②應(yīng)用服務(wù)器

③負(fù)載模擬器

④軟件運(yùn)行環(huán)境兼搏,平臺(tái)

測(cè)試環(huán)境測(cè)試數(shù)據(jù),可以根據(jù)系統(tǒng)的運(yùn)行預(yù)期來(lái)確定沙郭,比如需要測(cè)試的業(yè)務(wù)場(chǎng)景佛呻,數(shù)據(jù)多久執(zhí)行一次備份轉(zhuǎn)移,該業(yè)務(wù)場(chǎng)景涉及哪些表病线,每次操作數(shù)據(jù)怎樣寫入吓著,寫入幾條,需要多少的

測(cè)試數(shù)據(jù)來(lái)使得測(cè)試環(huán)境的數(shù)據(jù)保持一致性等等送挑。

可以在首次測(cè)試數(shù)據(jù)生成時(shí)绑莺,將其導(dǎo)出到本地保存,在每次測(cè)試開始前導(dǎo)入數(shù)據(jù)惕耕,保持一致性纺裁。

2、測(cè)試場(chǎng)景設(shè)計(jì)

通過(guò)和業(yè)務(wù)部門溝通以及以往用戶操作習(xí)慣司澎,確定用戶操作習(xí)慣模式欺缘,以及不同的場(chǎng)景用戶數(shù)量,操作次數(shù)惭缰,確定測(cè)試指標(biāo)浪南,以及性能監(jiān)控等。

3漱受、測(cè)試用例設(shè)計(jì)

確認(rèn)測(cè)試場(chǎng)景后络凿,在系統(tǒng)已有的操作描述上,進(jìn)一步完善為可映射為腳本的測(cè)試用例描述昂羡,用例大概內(nèi)容如下:

用例編號(hào):查詢表單_xxx_x1(命名以業(yè)務(wù)操作場(chǎng)景為主絮记,簡(jiǎn)潔易懂即可)

用例條件:用戶已登錄、具有對(duì)應(yīng)權(quán)限等虐先。怨愤。。

操作步驟:

①進(jìn)入對(duì)應(yīng)頁(yè)面蛹批。撰洗。篮愉。。差导。试躏。

②查詢相關(guān)數(shù)據(jù)。设褐。颠蕴。。助析。犀被。

③勾選導(dǎo)出數(shù)據(jù)。外冀。寡键。。雪隧。昌腰。

④修改上傳數(shù)據(jù)。膀跌。遭商。。捅伤。劫流。

PS:這里的操作步驟只是個(gè)例子,具體以系統(tǒng)業(yè)務(wù)場(chǎng)景描述丛忆;

4祠汇、腳本和輔助工具的開發(fā)及使用

按照用例描述,可利用工具進(jìn)行錄制熄诡,然后在錄制的腳本中進(jìn)行修改可很;比如參數(shù)化、關(guān)聯(lián)凰浮、檢查點(diǎn)等等我抠,最后的結(jié)果使得測(cè)試腳本可用,能達(dá)到測(cè)試要求即可袜茧;

PS:個(gè)人而言菜拓,建議盡量自己寫腳本來(lái)實(shí)現(xiàn)業(yè)務(wù)操作場(chǎng)景,這樣對(duì)個(gè)人技能提升較大笛厦;一句話:能寫就絕不錄制D啥Α!!

四贱鄙、測(cè)試執(zhí)行與管理

在這個(gè)階段劝贸,只需要按照之前已經(jīng)設(shè)計(jì)好的業(yè)務(wù)場(chǎng)景、環(huán)境和測(cè)試用例腳本逗宁,部署環(huán)境悬荣,執(zhí)行測(cè)試并記錄結(jié)果即可。

1疙剑、建立測(cè)試環(huán)境

按照之前已經(jīng)設(shè)計(jì)好的測(cè)試環(huán)境,部署對(duì)應(yīng)的環(huán)境践叠,由運(yùn)維或開發(fā)人員進(jìn)行部署言缤,檢查,并仔細(xì)調(diào)整禁灼,同時(shí)保持測(cè)試環(huán)境的干凈和穩(wěn)定管挟,不受外來(lái)因素影響。

2弄捕、執(zhí)行測(cè)試腳本

這一點(diǎn)比較簡(jiǎn)單僻孝,在已部署好的測(cè)試環(huán)境中,按照業(yè)務(wù)場(chǎng)景和編號(hào)守谓,按順序執(zhí)行我們已經(jīng)設(shè)計(jì)好的測(cè)試腳本穿铆。

3、測(cè)試結(jié)果記錄

根據(jù)測(cè)試采用的工具不同斋荞,結(jié)果的記錄也有不同的形式荞雏;現(xiàn)在大多的性能測(cè)試工具都提供比較完整的界面圖形化的測(cè)試結(jié)果,當(dāng)然平酿,對(duì)于服務(wù)器的資源使用等情況凤优,可以利用一些計(jì)數(shù)器或

第三方監(jiān)控工具來(lái)對(duì)其進(jìn)行記錄,執(zhí)行完測(cè)試后蜈彼,對(duì)結(jié)果進(jìn)行整理分析筑辨。

五、測(cè)試分析

1幸逆、測(cè)試環(huán)境的系統(tǒng)性能分析

根據(jù)我們之前記錄得到的測(cè)試結(jié)果(圖表棍辕、曲線等),經(jīng)過(guò)計(jì)算还绘,與預(yù)定的性能指標(biāo)進(jìn)行對(duì)比痢毒,確定是否達(dá)到了我們需要的結(jié)果;如未達(dá)到蚕甥,查看具體的瓶頸點(diǎn)哪替,然后根據(jù)瓶頸點(diǎn)的具體數(shù)據(jù),

進(jìn)行具體情況具體分析(影響性能的因素很多菇怀,這一點(diǎn)凭舶,可以根據(jù)經(jīng)驗(yàn)和數(shù)據(jù)表現(xiàn)來(lái)判斷分析)晌块。

2、硬件設(shè)備對(duì)系統(tǒng)性能表現(xiàn)的影響分析

由于之前設(shè)計(jì)了幾個(gè)不同的測(cè)試環(huán)境帅霜,故可以根據(jù)不同測(cè)試環(huán)境的硬件資源使用狀況圖進(jìn)行分析匆背,確定瓶頸是再數(shù)據(jù)庫(kù)服務(wù)器、應(yīng)用服務(wù)器抑或其他方面身冀,然后針對(duì)性的進(jìn)行優(yōu)化等操作钝尸。

3、其他影響因素分析

影響系統(tǒng)性能的因素很多搂根,可以從用戶能感受到的場(chǎng)景分析珍促,哪里比較慢,哪里速度尚可剩愧,這里可以根據(jù)2\5\8原則對(duì)其進(jìn)行分析猪叙;

至于其他諸如網(wǎng)絡(luò)帶寬、操作動(dòng)作仁卷、存儲(chǔ)池穴翩、線程實(shí)現(xiàn)、服務(wù)器處理機(jī)制等一系列的影響因素锦积,具體問(wèn)題具體分析芒帕,這里就不一一表述了。

4丰介、測(cè)試中發(fā)現(xiàn)的問(wèn)題

在性能測(cè)試執(zhí)行過(guò)程中副签,可能會(huì)發(fā)現(xiàn)某些功能上的不足或存在的缺陷,以及需要優(yōu)化的地方基矮,這也是執(zhí)行多次測(cè)試的優(yōu)點(diǎn)淆储。


|—如何使用nmon工具檢測(cè)服務(wù)器的資源

1、工具獲取

下載地址:

http://sourceforge.jp/projects/sfnet_nmon/releases/ 或者直接從這獲取家浇,還包含分析工具本砰。可下載比較全的壓縮包:

nmon_linux_14i_newer_Linux_versions.tar.gz

官方地址:http://nmon.sourceforge.net/

2钢悲、使用

1. 解壓并獲取以對(duì)應(yīng)平臺(tái)的nmon工具文件: nmon_linux_14i_newer_Linux_versions.tar.gz

解壓后点额,可以看到各個(gè)平臺(tái)的文件,我們只需要使用適合的即可莺琳,一般是nmon_linux_x86_64还棱。

2. 將nmon工具文件上傳至服務(wù)器的相應(yīng)目錄并增加可執(zhí)行權(quán)限

a.? ? ? 上傳成功后:

b.? ? ? 增加可執(zhí)行權(quán)限:

chmod 755 nmon_x86_64_centos6

3.使用nmon工具的實(shí)時(shí)監(jiān)控功能

?輸入 ./ nmon_x86_64_centos6

3、數(shù)據(jù)采集

為了實(shí)時(shí)監(jiān)控系統(tǒng)在一段時(shí)間內(nèi)的使用情況并將結(jié)果記錄下來(lái)惭等,我們可以通過(guò)運(yùn)行以下命令實(shí)現(xiàn):

$./nmon_x86_64_centos6 -ft? -m /nmon/log -s 1 -c 20

-f:按標(biāo)準(zhǔn)格式輸出文件:<hostname>_YYYYMMDD_HHMM.nmon珍手;

-t:輸出中包括占用率較高的進(jìn)程;

-m 切換到路徑去保存日志文件

-s 30:每30秒進(jìn)行一次數(shù)據(jù)采集

-c 10:一共采集10次

-c 取出多少個(gè)抽樣數(shù)量,這里為120琳要,即監(jiān)控=120*(30/60/60)=1小時(shí)

??? 根據(jù)小時(shí)計(jì)算這個(gè)數(shù)字的公式為:c=h*3600/s寡具,比如要監(jiān)控10小時(shí),每隔30秒采樣一次稚补,則c=10*3600/30=1200

輸入命令回車后童叠,將自動(dòng)在當(dāng)前目錄生成一個(gè)hostname_timeSeries.nmon的文件,如果hostname為svcpreapp01课幕,生成的文件為:svcpreapp01_151221_1738.nmon厦坛,如下:

./nmon_x86_64_centos6 -ft -s 1 -c 10 &

4、生成報(bào)告(生成圖形化結(jié)果)


該命令啟動(dòng)后乍惊,會(huì)在nmon所在目錄下生成監(jiān)控文件杜秸,并持續(xù)寫入資源數(shù)據(jù),直至360個(gè)監(jiān)控點(diǎn)收集完成——即監(jiān)控1小時(shí)污桦,這些操作均自動(dòng)完成,無(wú)需手工干 預(yù)匙监,測(cè)試人員可以繼續(xù)完成其他操作凡橱。如果想停止該監(jiān)控,需要通過(guò)“#ps –ef|grep nmon”查詢進(jìn)程號(hào)亭姥,然后殺掉該進(jìn)程以停止監(jiān)控稼钩。

通過(guò)后臺(tái)監(jiān)控和定期監(jiān)控,我們可以得到擴(kuò)展名為nmon的監(jiān)控文件达罗,這些文件記錄著系統(tǒng)資源的數(shù)據(jù)坝撑,需要配合分析工具(nmon analyser)進(jìn)行解讀。

  1)?? 使用FTP工具從服務(wù)器上取下生成結(jié)果文件/nmon/log/sjfx212_120318_1723.nmon到本機(jī)粮揉。

  2)?? 打開nmon_analyser.zip 包下的nmon analyser v33g.xls 文件巡李,點(diǎn)擊Analyse nomn data按鈕,選擇之前get下來(lái)的sjfx212_120318_1723.nmon文件扶认。

5侨拦,數(shù)據(jù)分析

借助nmon analyser可以把nmon采集的數(shù)據(jù)生成直觀的Excel表,nmon analyser可以在IBM的官網(wǎng)下載辐宾,https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power+Systems/page/nmon_analyser

在windows上下載后解壓狱从,有word和exce兩個(gè)文檔,Word是說(shuō)明文檔叠纹,包括更新日志季研,詳細(xì)參數(shù)等,其中的Excel就是nmon analyser工具了誉察。

Nmon 是一個(gè)分析aix和linux性能的免費(fèi)工具(其主要是ibm為自己的aix操作系統(tǒng)開發(fā)的与涡,但是也可以應(yīng)用在linux操作系統(tǒng)上),而nmon_analyser是nmon的一個(gè)工具可以把nmon生成的報(bào)告轉(zhuǎn)化成excel報(bào)表的形式供我們查看。下面先讓看下nmon_analyser生成的報(bào)表递沪。


|—1豺鼻、安裝JMeter插

新的版本提供了插件管理器,但是需要自行下載安裝款慨。

下載路徑:? https://jmeter-plugins.org/downloads/all/


放在lib/ext目錄下儒飒,然后重啟Jmeter,會(huì)在菜單-選項(xiàng)下多一個(gè) Plugins Manager菜單檩奠,打開即可對(duì)插件進(jìn)行安裝桩了、升級(jí)。


|—2埠戳、Jmeter 插件安裝

打開 Plugins Manager 菜單井誉,在可獲得的插件列表中選擇自己需要的插件進(jìn)行安裝。

常用的插件:

? 支持Base64加解密等多個(gè)函數(shù)的插件?Custom JMeter Functions

? 用于服務(wù)器性能監(jiān)視的?PerfMon Metrics Collector

? 用于建立壓力變化模型的?Stepping Thread Group

? 用于Json解析的?JSON Path Extractor

? 用于展示響應(yīng)時(shí)間曲線的?Response Times Over Time

? 用于展示TPS曲線的?Transactions per Second

|—1整胃、打開插件管理器Plugins Manager


可以看到:

? Installed Plugins: 已經(jīng)安裝的插件

? Avaliable Plugins: 可以下載的其他插件

? Upgrades:一些插件的更新

|—2颗圣、比如我們要用自定義線程組這個(gè)插件,它不是默認(rèn)安裝的屁使,那就可以進(jìn)入Avaliable Plugins 來(lái)下載安裝


搜索thread在岂,選中 Custom Thread Groups,點(diǎn)擊 Apply Changes and Restart JMeter

3、重啟后就可以添加自定義線程組了

|—3蛮寂、安裝自定義線程組



|—1蔽午、自定義線程組設(shè)計(jì)測(cè)試場(chǎng)景

JMeter中我們使用線程組來(lái)控制測(cè)試場(chǎng)景,原線程組無(wú)法設(shè)計(jì)復(fù)雜測(cè)試場(chǎng)景酬蹋,所以要用到JMeter插件提

供的線程組元件Ultimate Thread Group 和 Stepping Thread Group及老。

|—2、插件安裝:

JMeter插件的安裝參考:https://blog.csdn.net/galen2016/article/details/92806212

什么是實(shí)際的性能測(cè)試范抓?骄恶??

1)思考時(shí)間:用戶在做不同操作之間有時(shí)間停頓匕垫,或者延遲叠蝇,思考時(shí)間就是模擬用戶的操作過(guò)程中的停頓的間。

2)步伐年缎,速度:主要包括悔捶,大量用戶進(jìn)來(lái)的時(shí)間和退出時(shí)間,控制迭代之間的時(shí)間单芜,例如蜕该,現(xiàn)場(chǎng)用戶20個(gè),設(shè)置5秒內(nèi)全部進(jìn)入洲鸠,就是這樣的情況堂淡。

3)壓力測(cè)試時(shí)間:假如需要500個(gè)人同時(shí)測(cè)試30分鐘馋缅,這里持續(xù)30分鐘就是壓測(cè)時(shí)間。

|—3绢淀、Ultimate Thread Group

一萤悴、簡(jiǎn)單場(chǎng)景

100個(gè)線程,在10秒內(nèi)加載完皆的,然后持續(xù)運(yùn)行600秒覆履,最后在10秒內(nèi)結(jié)束所有線程,如下圖:


參數(shù)說(shuō)明:

? Start Threads Count:開始線程數(shù)量

? Initial Delay费薄,sec:延時(shí)啟動(dòng)當(dāng)前行的線程硝全,單位:秒

? Startup Time,sec:線程加載多長(zhǎng)時(shí)間楞抡,單位:秒

? Hold Load For伟众,sec:當(dāng)前行線程達(dá)到峰值后的穩(wěn)定加載時(shí)間,單位:秒

? Shutdown Time:線程在多長(zhǎng)時(shí)間內(nèi)停止下來(lái)召廷,單位:秒

二凳厢、浪涌場(chǎng)景


說(shuō)明:

第一次從0秒開始,在10秒內(nèi)啟動(dòng)100個(gè)線程竞慢,然后持續(xù)運(yùn)行600秒先紫,再在10秒內(nèi)停止這100個(gè)線程

第二次從第620秒開始,在10秒內(nèi)啟動(dòng)100個(gè)線程梗顺,然后持續(xù)運(yùn)行600秒泡孩,再在10秒內(nèi)停止這100個(gè)線程

第三次第四次 依次類推车摄,只需改動(dòng)Initial Delay的值寺谤,本次Initial Delay的值=等于上一次的(Initial Delay+Startup Time+Hold Load For + Shutdown Time)

三、持續(xù)加壓場(chǎng)景


說(shuō)明:

這是一個(gè)負(fù)載不斷增大的場(chǎng)景吮播,有3條線程任務(wù)作業(yè)变屁,每一個(gè)持續(xù)時(shí)間是600秒,100個(gè)線程運(yùn)行600秒后再加100個(gè)意狠,共300個(gè)線程粟关。然后從第1810秒開始,沒(méi)10秒停止100個(gè)線程环戈。整個(gè)場(chǎng)景共運(yùn)行1840秒

注意:Hold Load For的值要從最后一個(gè)任務(wù)往前推算

|—4闷板、Stepping Thread Group

下圖是100個(gè)線程按階梯狀遞增運(yùn)行,每5秒內(nèi)加載20個(gè)線程直到100院塞,每個(gè)階梯是600秒遮晚,最后一個(gè)階梯是1000秒,即并發(fā)100個(gè)線程時(shí)拦止,運(yùn)行1000秒县遣。最后每秒停止10個(gè)線程糜颠。

這是一個(gè)典型的負(fù)載測(cè)試場(chǎng)景,持續(xù)增加負(fù)載萧求,檢驗(yàn)服務(wù)器在不同負(fù)載下的性能其兴。


參數(shù)說(shuō)明:

? This group will start:加載多少線程

? First,wait for:等待多長(zhǎng)時(shí)間開始加載線程

? Then start:初次加載多少個(gè)線程

? Next夸政,add:下一次加載多少個(gè)線程

? Threads every:當(dāng)前運(yùn)行多長(zhǎng)時(shí)間后再次加載線程

? Using ramp_up:加載線程時(shí)間

? Then hold load for:線程全部加載完成后運(yùn)行多長(zhǎng)時(shí)間

? Finally元旬,stop /threads every:多長(zhǎng)時(shí)間停止多少個(gè)線程


|—性能分析

排除法

1,響應(yīng)是太長(zhǎng)? 5s

1秒梳,中間件問(wèn)題? apache中間件

?? ? ? ?? 添加中間件的線程數(shù)

?? ? ? ? ? ? ? linux? 查看當(dāng)前http線程數(shù)量

?? ? ? ? ? ? ? ps -ef|grep httpd|wc -l

?? ? ? ? ? ? ? ps -ef 查看進(jìn)程? grep httpd 過(guò)濾進(jìn)程 httpd

?? ? ? ? ? ? ? wc -l? 統(tǒng)計(jì)數(shù)量

?? ? ? ? ? ? ? http.conf文件中 修改 最大連接數(shù)? ? ? ? ? ?

?? ? ? ? ? ? ? /etc/httpd/conf/httpd.conf

2法绵、后臺(tái)代碼

?? ? a. 代碼架構(gòu)合不合理

?? ? b. 代碼算法是否存在優(yōu)化的空間

3、數(shù)據(jù)庫(kù)問(wèn)題

?? ? a.查看數(shù)據(jù)庫(kù)的最大連接數(shù)

?? ?? mysql -u root -p123456

?? ?? 查詢最大連接數(shù)據(jù):show VARIABLES like '%max_connect%'

?? ?? 最多? 支持3000-4000

?? ?? set GLOBAL MAX_CONNECTIONS=1000? 修改連接數(shù)

?? ? b.查看sql運(yùn)行時(shí)間

?? ?? show full PROCESSLIST 展示所有sql運(yùn)行的時(shí)間

?? ?? 如果 運(yùn)行時(shí)間過(guò)長(zhǎng)酪碘,進(jìn)行sql語(yǔ)句優(yōu)化? ??

?? ?? 1朋譬,進(jìn)行sql優(yōu)化

?? ?? 2,建立索引文件(增加查詢速度)? ??

??? c.索引緩存大小

?? ? ? show VARIABLES like 'key_buffer_size%'? 查看緩存空間大小

?? ? ? key_reads 從磁盤讀取數(shù)據(jù)

?? ? ? Key_read_requests 總的數(shù)據(jù)讀取

?? ? ? 命中率:

?? ? ? 命中率:

?? ? ? 命中率計(jì)算=key_reads/Key_read_requests*100=1.7%? ? ? ? ? ? ??

?? ? ? 命中率計(jì)算=key_reads/Key_read_requests*100%=1.7%

?? ? ? 當(dāng)命中率 低于0.1% 算ok 高于0.1% 提高緩存空間大小

?? ? ? 當(dāng)命中率小于0.01% 適當(dāng)減少一些緩存空間大小

?? ? d兴垦,sleep過(guò)多

?? ? e徙赢,臨時(shí)表空間? ??

?4、 排除網(wǎng)絡(luò)問(wèn)題? ? ? ? ? ? ? ?? #抓包數(shù)據(jù)

?? ?? 提升網(wǎng)絡(luò)帶寬? 200M? 看響應(yīng)時(shí)間? 會(huì)不會(huì)大幅度縮短

?5探越,提升服務(wù)器硬件設(shè)備

?? ?? cpu狡赐,內(nèi)存,磁盤


|—分布式壓測(cè)

一臺(tái)主控機(jī)钦幔,多臺(tái)客戶機(jī)

1枕屉、在主控機(jī)上編寫性能測(cè)試腳本

2、修改主控機(jī)的配置文件jemeter.properties文件鲤氢,將所有的客戶機(jī)的IP地址及端口設(shè)置好

3搀擂、在主控機(jī)的Jmeter頁(yè)面啟動(dòng)客戶機(jī)?

?? ? ? 運(yùn)行->遠(yuǎn)程啟動(dòng)(指定啟動(dòng)哪一臺(tái))

?? ? ? 運(yùn)行->遠(yuǎn)程啟動(dòng)所有

備注說(shuō)明:如果客戶機(jī)不夠,也可以將主控機(jī)用來(lái)當(dāng)成客戶機(jī)向服務(wù)器發(fā)請(qǐng)求卷玉,這里需要在jemeter.properties配置文件中把主控機(jī)的ip地址及端口加入哨颂,并啟動(dòng)主控機(jī)的jmeter-server.bat文件即可。

所有客戶機(jī)的數(shù)據(jù)全部會(huì)自動(dòng)發(fā)送給主控機(jī)相种,并進(jìn)行分析威恼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市寝并,隨后出現(xiàn)的幾起案子箫措,更是在濱河造成了極大的恐慌,老刑警劉巖衬潦,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斤蔓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡别渔,警方通過(guò)查閱死者的電腦和手機(jī)附迷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門惧互,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人喇伯,你說(shuō)我怎么就攤上這事喊儡。” “怎么了稻据?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵艾猜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我捻悯,道長(zhǎng)匆赃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任今缚,我火速辦了婚禮算柳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘姓言。我一直安慰自己瞬项,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布何荚。 她就那樣靜靜地躺著囱淋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪餐塘。 梳的紋絲不亂的頭發(fā)上妥衣,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音戒傻,去河邊找鬼税手。 笑死,一個(gè)胖子當(dāng)著我的面吹牛稠鼻,可吹牛的內(nèi)容都是我干的冈止。 我是一名探鬼主播狂票,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼候齿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了闺属?” 一聲冷哼從身側(cè)響起慌盯,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎掂器,沒(méi)想到半個(gè)月后亚皂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡国瓮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年灭必,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了狞谱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡禁漓,死狀恐怖跟衅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情播歼,我是刑警寧澤伶跷,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站秘狞,受9級(jí)特大地震影響叭莫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜烁试,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一雇初、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧减响,春花似錦抵皱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至悼院,卻和暖如春伤为,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背据途。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工绞愚, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人颖医。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓位衩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親熔萧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子糖驴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容