大型web網(wǎng)站壓力測(cè)試技巧及常見的web頁面性能測(cè)試工具

發(fā)布時(shí)間:2020-07-01

性能測(cè)試在大型網(wǎng)站系統(tǒng)的設(shè)計(jì)和開發(fā)中非常重要,通常會(huì)和容量預(yù)估等工作結(jié)合在一起,穿插在系統(tǒng)開發(fā)的不同方案。性能測(cè)試可以幫助我們及時(shí)發(fā)現(xiàn)系統(tǒng)的性能短板,評(píng)估系統(tǒng)的能力,在這個(gè)基礎(chǔ)在上再進(jìn)行針對(duì)性的性能優(yōu)化。

同時(shí),壓力測(cè)試還可以幫助我們驗(yàn)證系統(tǒng)的穩(wěn)定性和可靠性。

一個(gè)完整的性能測(cè)試方案通常包括以下幾個(gè)方面: 

1.壓力測(cè)試及生成性能報(bào)告

壓力測(cè)試一個(gè)重點(diǎn)是如何產(chǎn)生壓力,通??梢酝ㄟ^自己編寫腳本模擬請(qǐng)求,或者使用成熟的壓測(cè)工具進(jìn)行。壓力測(cè)試很重要的一點(diǎn)是如何使得模擬壓測(cè)的數(shù)據(jù)盡量真實(shí),越接近真實(shí)用戶越好。

1)根據(jù)性能報(bào)告定位系統(tǒng)瓶頸,進(jìn)行針對(duì)性優(yōu)化,測(cè)試和優(yōu)化的工作可以和日常開發(fā)并行

壓力測(cè)試完成以后,我們會(huì)拿到一個(gè)壓測(cè)報(bào)告,這個(gè)報(bào)告通常會(huì)告訴我們系統(tǒng)的QPS、TPS、響應(yīng)時(shí)延等數(shù)據(jù),這些數(shù)據(jù)可以讓我們對(duì)服務(wù)器的性能有個(gè)整體的了解,發(fā)現(xiàn)存在的問題,但是不能幫助我們定位問題。這個(gè)時(shí)候我們可以從系統(tǒng)的各個(gè)組件入手,關(guān)注系統(tǒng)的CPU、內(nèi)存、IO、網(wǎng)絡(luò),對(duì)比這些環(huán)節(jié)對(duì)整體性能的影響,確定性能問題是系統(tǒng)哪一部分造成的,然后針對(duì)性的在系統(tǒng)中逐個(gè)優(yōu)化。

2)估算容量承載能力,合理規(guī)劃系統(tǒng)資源

進(jìn)行壓力測(cè)試的一個(gè)重要目的是讓現(xiàn)有的服務(wù)器資源發(fā)揮最大的價(jià)值,經(jīng)過前期的測(cè)試和分析,這時(shí)候我們對(duì)系統(tǒng)整體的性能有了一個(gè)認(rèn)識(shí),對(duì)服務(wù)器的承載能力有了預(yù)估,這個(gè)時(shí)候我們就可以結(jié)合業(yè)務(wù)規(guī)模配置服務(wù)器數(shù)量,CDN資源等,讓最少的資源產(chǎn)生最大的價(jià)值。

2.常用壓力測(cè)試工具選型

壓力測(cè)試很關(guān)鍵的一點(diǎn)是如何產(chǎn)生壓力,選擇哪款測(cè)試工具很重要,開發(fā)公司內(nèi)部應(yīng)用的測(cè)試工具,以便更好的適應(yīng)公司的業(yè)務(wù),作為SAAS服務(wù)的重要部分,幾個(gè)云服務(wù)提供商也紛紛開放了壓測(cè)及性能監(jiān)控服務(wù)。

大多數(shù)公司還是會(huì)選擇自己完成測(cè)試工作,這里關(guān)注一下常用的壓力測(cè)試工具。 

幾款流行的壓力測(cè)試工具 

(1)JMeter:Apache JMeter是Apache組織開發(fā)的基于Java的壓力測(cè)試工具,用于對(duì)軟件做壓力測(cè)試,它最初被設(shè)計(jì)用于Web應(yīng)用測(cè)試但后來擴(kuò)展到其他測(cè)試領(lǐng)域。 它可以用于測(cè)試靜態(tài)和動(dòng)態(tài)資源例如靜態(tài)文件、Java小服務(wù)程序、CGI腳本、Java 對(duì)象、數(shù)據(jù)庫, FTP服務(wù)器, 等等。

(2)LoadRunner

LoadRunner是惠普旗下一款自動(dòng)負(fù)載測(cè)試工具,它能預(yù)測(cè)系統(tǒng)行為,優(yōu)化性能。LoadRunner強(qiáng)調(diào)的是整個(gè)企業(yè)的系統(tǒng),它通過模擬實(shí)際用戶的操作行為和實(shí)行實(shí)時(shí)性能監(jiān)測(cè),來幫助更快的確認(rèn)和查找問題。此外,LoadRunner 能支持最寬范的協(xié)議和技術(shù),量身定做地提供解決方案。

(3)PerformanceRunner

PerformanceRunner是國(guó)內(nèi)專業(yè)商業(yè)化性能測(cè)試工具,通過模擬海量用戶并發(fā)測(cè)試整個(gè)系統(tǒng)的承受能力,實(shí)現(xiàn)壓力測(cè)試、性能測(cè)試、配置測(cè)試、峰值測(cè)試等。大限度地縮短測(cè)試時(shí)間,優(yōu)化性能和加速應(yīng)用系統(tǒng)的發(fā)布周期。

3.如何監(jiān)控系統(tǒng)資源,定位性能瓶頸

壓力測(cè)試可以暴露系統(tǒng)性能問題,如高并發(fā)下訪問緩慢,服務(wù)宕機(jī)等,但是通過壓測(cè)不能具體到哪里存在瓶頸,必須要在壓測(cè)同時(shí)配合適當(dāng)?shù)馁Y源監(jiān)控,幫助我們定位問題。

4.針對(duì)測(cè)試報(bào)告進(jìn)行針對(duì)性優(yōu)化

在壓力測(cè)試發(fā)現(xiàn)問題以后,就要進(jìn)行有針對(duì)性的優(yōu)化。對(duì)于不同的系統(tǒng),這個(gè)過程的策略并不是確定的,但是大概可以劃分為以下幾個(gè)步驟: 

定位性能瓶頸,找出系統(tǒng)存在的問題 

不同系統(tǒng)的特點(diǎn)不同,在性能瓶頸上也有不同的表現(xiàn),一般來說,下面的幾個(gè)方面通常存在比較大的優(yōu)化空間:

(1)磁盤I/O及文件操作

由于磁盤I/O讀寫的速度要比內(nèi)存慢很多,程序在運(yùn)行過程中,如果需要等待磁盤I/O完成,那么低效的I/O操作會(huì)拖累整個(gè)系統(tǒng)。

(2)網(wǎng)絡(luò)操作

對(duì)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行讀寫的情況與磁盤I/O類似。由于網(wǎng)絡(luò)環(huán)境的不確定性,尤其是對(duì)互聯(lián)網(wǎng)上數(shù)據(jù)的讀寫,網(wǎng)絡(luò)操作的速度可能比本地磁盤I/O更慢。

(3)CPU

對(duì)計(jì)算資源要求較高的應(yīng)用,由于其長(zhǎng)時(shí)間、不間斷地大量占用CPU資源,那么對(duì)CPU的爭(zhēng)奪將導(dǎo)致性能問題。如科學(xué)計(jì)算、3D渲染等對(duì)CPU需求旺盛的應(yīng)用。

(4)高并發(fā)下的上下文切換及鎖競(jìng)爭(zhēng)等

高并發(fā)程序如果沒有做好優(yōu)化,存在大量的鎖競(jìng)爭(zhēng),激烈得鎖競(jìng)爭(zhēng)將會(huì)明顯增加線程上下文切換的開銷,對(duì)性能造成極大的影響

(5)數(shù)據(jù)庫

大部分應(yīng)用程序都離不開數(shù)據(jù)庫,而海量數(shù)據(jù)的讀寫操作可能是相當(dāng)費(fèi)時(shí)的。而應(yīng)用程序可能需要等待數(shù)據(jù)庫操作完成或者返回請(qǐng)求的結(jié)果集,那么緩慢的同步操作將成為系統(tǒng)瓶頸。

確定調(diào)整目標(biāo),提出解決方案

找到系統(tǒng)的性能問題以后,需要作出對(duì)應(yīng)的解決方案。

典型的影響性能的問題,比如:

(1)系統(tǒng)對(duì)高并發(fā)的場(chǎng)景響應(yīng)不足,如數(shù)據(jù)庫連接池過低,服務(wù)器連接數(shù)超過上限,數(shù)據(jù)庫鎖控制考慮不足等

(2)內(nèi)存泄露,如在長(zhǎng)時(shí)間運(yùn)行下,內(nèi)存沒有正常釋放,發(fā)生宕機(jī)等

(3)數(shù)據(jù)庫優(yōu)化不足,業(yè)務(wù)日益增長(zhǎng),關(guān)聯(lián)表眾多,SQL不夠優(yōu)化等

定位到上述問題,接下來就是提出合理的調(diào)整目標(biāo),比如服務(wù)器資源有限,可以通過配置更多的機(jī)器,服務(wù)上云等進(jìn)行優(yōu)化;如果對(duì)高并發(fā)支持不好,就可以在代碼層面優(yōu)化,提高并發(fā)支持;數(shù)據(jù)庫性能問題,如慢查詢等問題,就可以進(jìn)行 SQL語句優(yōu)化等。

實(shí)施解決方案,進(jìn)行迭代開發(fā)

上一步的分析給出了一個(gè)初步的性能優(yōu)化方案,接下來就是針對(duì)方案中提到的內(nèi)容進(jìn)行針對(duì)性的改進(jìn)。這個(gè)過程可以應(yīng)用敏捷的思想進(jìn)行迭代,在開發(fā)完成后,為了對(duì)比優(yōu)化結(jié)果,可以對(duì)調(diào)優(yōu)后的系統(tǒng)進(jìn)行小范圍測(cè)試。

進(jìn)行基準(zhǔn)測(cè)試并分析調(diào)優(yōu)結(jié)果

數(shù)據(jù)說明一切,性能優(yōu)化的結(jié)果不能簡(jiǎn)單的通過 “感覺系統(tǒng)變快了”來衡量,最好是通過對(duì)比優(yōu)化前后的測(cè)試結(jié)果,用圖表的方式直觀的把優(yōu)化結(jié)果展示出來。基準(zhǔn)測(cè)試是指通過設(shè)計(jì)科學(xué)的測(cè)試工具和方式方法,實(shí)現(xiàn)對(duì)一類測(cè)試對(duì)象的某項(xiàng)性能指標(biāo)進(jìn)行定量的和可對(duì)比的測(cè)試。對(duì)比測(cè)試結(jié)果,結(jié)合容量評(píng)估等工作,可以讓系統(tǒng)發(fā)揮最大的效用。

一個(gè)階段的優(yōu)化工作完成以后,最好是總結(jié)反思一下,比如本次優(yōu)化是否達(dá)到了目標(biāo)?系統(tǒng)的整體性能是否得到了改善?用戶體驗(yàn)是否得到了提升?以及如何在接下來的開發(fā)工作中做的更好。

推薦閱讀:

如何進(jìn)行壓力測(cè)試和并發(fā)測(cè)試?性能測(cè)試工具PR使用特點(diǎn)介紹

網(wǎng)站負(fù)載測(cè)試有哪些工具推薦?

Web性能測(cè)試用例設(shè)計(jì)方法及分析

Web壓力測(cè)試怎么測(cè)?壓力測(cè)試怎么確定并發(fā)數(shù)?

本文內(nèi)容不用于商業(yè)目的,如涉及知識(shí)產(chǎn)權(quán)問題,請(qǐng)權(quán)利人聯(lián)系SPASVO小編(021-60725088-8054),我們將立即處理,馬上刪除。
滬ICP備07036474號(hào) 2003-2024 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd.
微信
咨詢

添加客服微信 歡迎咨詢測(cè)試工具和測(cè)試服務(wù)

微信客服
問題
反饋
產(chǎn)品
畫冊(cè)

掃描二維碼下載澤眾軟件企業(yè)宣傳冊(cè)

產(chǎn)品畫冊(cè)
返回
頂部

方案咨詢

×
提交信息

電話咨詢,400-035-7887,安排專業(yè)技術(shù)售前給您解答(產(chǎn)品試用、技術(shù)交流、服務(wù)咨詢和商務(wù)報(bào)價(jià))。

您的信息已成功提交!

我們的客服人員稍后會(huì)與您聯(lián)系