更多課程 選擇中心

軟件測試培訓
達內IT學院

400-111-8989

軟件測試常見性能問題

  • 發布:軟件測試培訓
  • 來源:軟件測試資訊
  • 時間:2020-03-09 16:05

性能測試大致分以下幾個步驟:

需求分析

腳本準備

測試執行

結果整理

問題分析

今天要說的是最后一個步驟——“問題分析”;

需求描述

有一個服務,啟動時會加載一個1G的詞表文件到內存,請求來了之后,會把請求詞去詞表里做模糊匹配,如果匹配到了就向一個后端服務發送一條http請求,拿回數據之后,返回給客戶端的同時,向mysql記錄請求的唯一標識和一個請求次數的標記;

其中有幾個關鍵函數

模糊匹配(fuzzyMatching)

后端請求函數(sendingRequest)

拼裝請求函數(buildResponse)

記錄mysql請求次數標記(signNum)

問題及分析

第一組:完全隨機請求詞,qps達到1k時,服務器未見異常,cpu、內存、帶寬均未滿,qps無法繼續提升;

分析:由于此服務后端連接了其它服務,所以在壓測之前,要確認后端服務不會成為瓶頸點,目前的狀態很可能是后端服務限制了被測服務的性能;此時可以檢查后端服務所在機器的各項指標,或者查看本機的連接狀況,一般后端服務無法處理,而被測服務又會一直向后面請求的話,timewait狀態的連接會變得比較多;

第二組:解決后端服務的問題后,第二組使用平均30個字的請求詞,來打壓,qps到400時,cpu load已滿;

分析:這種情況明顯是由于fuzzyMatching函數計算效率的問題導致cpu滿載,從而無法提升qps,使響應時間不斷增大,此時可以通過perf+火焰圖來確定整個處理請求過程中響應時間長的函數;此時需要評估壓測數據是否合理,如果線上平均請求詞只有2個的時候,此組測試明顯不合理,此時要開發進行性能優化就是浪費時間的;如果評估測試數據合理,可以再次更換短詞數據進行壓測驗證猜測;

第三組:解決了上述兩個問題之后,使用完全隨機請求詞,qps到達3k后降低至1k,然后再次提升到3k,如此反復;

分析:此時關注一下各項指標,排除了以上的問題的話,操作mysql慢的問題可能性大一些,對這種需要高并發的系統來說,直接讀寫mysql不是個聰明的解決方案,一般會用redis做一層緩存,這里說道的另一個問題就是開發設計不合理,導致的性能問題;

第四組:將后端換做真實的服務來做整體壓測,發現qps最高只能到300,此時檢查各項指標,發現入口帶寬占滿了;

分析:這次問題比較明顯,后端服務返回內容過大,導致帶寬被占滿,此時依然需要評估需求:1、是否需要后端返回的所有數據內容;2、評估更換萬兆網卡的性價比;3、是否可以通過技術手段優化帶寬占用,比如把一次請求分散到多組服務的多個請求;

perf+火焰圖定位函數問題

這里簡單說一下如何使用perf+火焰圖來直觀的定位性能問題:

perf

Perf 擁有了眾多的性能分析能力,舉例來說,使用 Perf 可以計算每個時鐘周期內的指令數,稱為 IPC,IPC 偏低表明代碼沒有很好地利用 CPU。Perf 還可以對程序進行函數級別的采樣,從而了解程序的性能瓶頸究竟在哪里等等。Perf 還可以替代 strace,可以添加動態內核 probe 點,還可以做 benchmark 衡量調度器的好壞。

使用舉例:perf record -e cpu-clock -g -p 11110 -o data/perf.data sleep 30

-g 選項是告訴perf record額外記錄函數的調用關系

-e cpu-clock 指perf record監控的指標為cpu周期

-p 指定需要record的進程pid

生成火焰圖

1、第一步

使用壓力測試工具對程序進行打壓,壓到程序拐點;

$sudo perf record -e cpu-clock -g -p 11110

Ctrl+c結束執行后,在當前目錄下會生成采樣數據perf.data.

2、第二步

用perf script工具對perf.data進行解析

perf script -i perf.data &> perf.unfold

3、第三步

將perf.unfold中的符號進行折疊:

./stackcollapse-perf.pl perf.unfold &> perf.folded

4、最后生成svg圖:

./flamegraph.pl perf.folded > perf.svg

原生的perf可以直接定位C/C++的程序,通常編譯debug版本的程序能看到更多的信息,java、go等語言可以通過各自定制的工具來生成,原理類似;通過火焰圖可以輕松定位到哪個函數的處理時間最長,從而找到問題所在。

免責聲明:文章內容來源于網絡,如有侵權,請聯系我們刪除。

預約申請免費試聽課

填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

上一篇:高薪測試技術要掌握哪些
下一篇:熱修復測試過程注意事項

學習軟件測試需要了解的數據庫知識?

熱修復測試過程注意事項

軟件測試常見性能問題

高薪測試技術要掌握哪些

  • 關注微信公眾號

    回復關鍵字:視頻資料

    免費領取 達內課程視頻學習資料

  • 視頻學習QQ群

    添加QQ群:1143617948

    免費領取達內課程視頻學習資料

Copyright ? 2018 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

選擇城市和中心
黑龍江省

吉林省

河北省

陜西省

湖南省

貴州省

云南省

廣西省

海南省

一级香蕉视频在线观看,在线看黄AV免费,91国产视频,2019男人天堂手机在线,97人人色在线视频,阿v天堂在线 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>