導語:docker
因爲咱們公司用戶數量龐大,在服務上線以前,性能測試必不可少。本文主要介紹性能測試的流程,須要關注的指標,性能測試工具Apache bench的使用,以及常見的坑。apache
什麼是性能測試:服務器
性能測試是經過自動化的測試工具模擬多種正常、峯值以及異常負載條件來對系統的各項性能指標進行測試。負載測試和壓力測試都屬於性能測試,二者能夠結合進行。經過負載測試,肯定在各類工做負載下系統的性能,目標是測試當負載逐漸增長時,系統各項性能指標的變化狀況。壓力測試是經過肯定一個系統的瓶頸或者不能接受的性能點,來得到系統能提供的最大服務級別的測試。網絡
性能測試的圖標是什麼:異步
性能測試最終的目的,是找到系統的瓶頸,通常來講,是找到服務單機最大TPS(每秒完成的事務數)。工具
須要注意的是,服務的TPS須要結合請求平均耗時來綜合考慮。例如:服務TPS壓到1000,平均請求耗時500ms,可是假如咱們定的服務請求耗時不能超過200ms,那麼這個1000的TPS是無效的。性能
不少場景下,服務都會設置超時時間,若平均耗時超過此超時時間,則可認爲服務處於不可用狀態。測試
何時須要性能測試:日誌
一、功能測試完成以後,上線以前。blog
正常狀況下,上線以前,都應該進行性能測試,尤爲是請求量較大的接口,重點業務的核心接口,以及直接影響用戶操做流程的接口。
二、各類大促,運營活動開始以前。
大促,運營活動,都會致使流量激增,所以上線以前作好壓力測試,評估系統性能是否知足預估流量,提早作好準備。
舉個反面例子:某品牌電商,年年大促年年掛。
再來個正面的例子:每一年雙十一以前,阿里都會有全鏈路壓測,各個業務本身也會有獨立的壓測,阿里在這塊作得仍是很是不錯的。
怎麼作性能測試:
常見的Http性能測試工具:
httpload
wrk
apache bench
最終咱們選擇apache benche。
看上去wrk纔是最完美的,可是咱們卻選擇了ab。咱們驗證過各類工具請求數據是否準確,壓測的時候,經過後臺日志記錄,最終得出結論,ab的請求數偏差在千分之二左右,而其餘兩個工具在千分之五左右。
不過不得不說,wrk的確是一款很是優秀的壓測工具,採用異步IO模型,能壓到很是高的TPS。曾經用空邏輯接口壓到過7w的TPS,而相同接口,ab只能壓到2w多。
apache benche的使用
前面已經給了一個簡單的例子了,下面詳細介紹下ab的使用。
如何安裝?
若是docker容器已經安裝的apache,那麼恭喜,ab是apache自帶的一個組件,不用從新安裝了。固然,也能夠本身單獨安裝apache bench。
ab 經常使用參數介紹:
性能測試報告
常見的坑
(1)AB發送的是http1.0請求。
(2)-t能夠指定時間,-n指定發送請求總數,同時使用時壓測會在-t秒或者發送了-n個請求以後中止。可是-t必定要在-n以前(ab的bug,-n在-t以前最多隻會跑5s)。
(3)爲了使測試結果更可靠,單次壓測時間應在2分鐘以上。
理論上,壓測時間越長,結果偏差越小。同時,能夠在瓶頸附近進行長時間壓測,例如一個小時或者一天,能夠用來測試系統穩定性。許多系統的bug都是在持續壓力下才會暴露出來。
(4)當心壓測客戶端成爲瓶頸。
例如上傳,下載接口的壓測,此時壓測客戶端的網絡上行,下行速度都會有瓶頸,千萬當心服務器還沒到達瓶頸時,客戶端先到了瓶頸。此時,能夠利用多客戶端同時壓測。
(5)ab能夠將參數寫入文件中,用此種方式能夠測試上傳文件的接口。
須要配合-p -t 使用:
轉載自騰訊移動品質中心TMQ