天天看點

如何分析問題、找到性能瓶頸、掌握性能調優?一文講懂性能測試

作者:Atstudy網校

背景

當下雲計算、大資料盛行的背景下,大并發和大吞吐量的需求已經是擺在企業面前的問題了,其中網絡的性能要求尤為關鍵,除了軟體本身需要考慮到性能方面的要求,一些硬體上面的優化也是必不可少的。

如何分析問題、找到性能瓶頸、掌握性能調優?一文講懂性能測試

作為一名測試工作者,對于性能測試的問題肯定不會陌生,但是測試不僅僅是執行和收集資料,更多的應該是分析問題、找到性能瓶頸以及一些優化工作。

畢竟在客戶現場測試性能的時候,能夠通過一些系統層面的調優,提升軟體的性能,那對項目無疑是一件錦上添花的事。

名額

不管你做何種性能測試,名額是繞不過去的事,名額是量化性能測試的重要依據。衡量某個性能的名額有很多,比如衡量資料庫性能通常用TPS、QPS和延時,衡量io性能通常用iops、吞吐量和延時,衡量網絡的性能名額也有很多,在業界有一個RFC2544的标準,參考連結:https://www.rfc-editor.org/rfc/rfc2544。

這裡稍微解釋一下幾個名額:

背靠背測試:在一段時間内,以合法的最小幀間隔在傳輸媒體上連續發送固定長度的包而不引起丢包時的資料量。

丢包率測試:在路由器穩定負載狀态下,由于缺乏資源而不能被轉發的幀占所有該被轉發的幀的百分比。

時延測試:輸入幀的最後一位到達輸入端口到輸出幀的第一位出現在輸出端看的時間間隔。

吞吐量測試:沒有丢包情況下能夠轉發的最大速率。

通常客戶對于吞吐量和時延的名額是比較關心的,吞吐量反應了系統的并發的處理能力,時延反應了整體業務的響應時間。

測試準備

本文以網卡中的戰鬥機intel X710為測試對象,進行小包的吞吐量測試。

Tips:通常大包的測試可以達到線速,小包則很難線速,相同mtu下,包越小機關時間内cpu處理的包數越多,cpu的壓力越大。

測試拓撲

在被測裝置上插入X710網卡,使用網卡的2個網口建立linux bridge,通過測試儀發送接收資料包:

如何分析問題、找到性能瓶頸、掌握性能調優?一文講懂性能測試

[root@localhost~]#brctl addbr test

[root@localhost~]#brctl addif test enp11s0f2 enp11s0f3

[root@localhost~]#ip link set test up

[root@localhost~]#brctl show

bridge name bridge id STP enabled interfaces

test 8000.6cb311618c30 no enp11s0f2

enp11s0f3

virbr0 8000.5254004c4831 yes virbr0-nic

3.2硬體資訊

有個偉人曾說過,“如果性能測試不談硬體,那麼就和戀愛不談結婚一個道理,都是耍流氓”。

魯迅:"我沒說過!"題外話,這裡先簡單說一下資料包進入網卡後的流程:資料包進入到網卡後,将資料緩存到伺服器記憶體後通知核心進行處理,接着協定棧進行處理,通常netfilter也是在協定棧去處理,最後應用程式從socker buff讀取資料。

言歸真正,本文測試采用的是國産之光飛騰S2500伺服器。

如何分析問題、找到性能瓶頸、掌握性能調優?一文講懂性能測試

4、測試調優

針對以上拓撲,發送128位元組萬兆雙向流量,用RFC2544标準進行測試。

如何分析問題、找到性能瓶頸、掌握性能調優?一文講懂性能測試

RFC2544的标準是0丢包測試吞吐量,結果是818Mbps

以上都是前菜,接下來是本文的重頭戲,根據已有資源做一些優化,提升“測試”性能,讓客戶滿意。

4.1調整隊列數

調整網卡的隊列數,利用網卡的多隊列特性,不同的隊列通過中斷綁定到不同的cpu,提升cpu處理性能,提升網絡帶寬。

調整隊列數,這裡也不是越大越好,因為伺服器的cpu個數是有上限的,隊列多的話會出現多個中斷綁定在同一個cpu上,這裡我伺服器單個numa有8個cpu,修改隊列數為8。

[root@localhost~]#ethtool-l enp11s0f2

Channel parameters for enp11s0f2:

Pre-set maximums:

RX:0

TX:0

Other:1

Combined:128

Current hardware settings:

RX:0

TX:0

Other:1

Combined:8

因為資料包會根據hash來進入到多個收包隊列,是以發送資料包的時候,可以選擇源ip變化的流來確定使用了網卡的多隊列,可以檢視網卡的隊列計數。

……

由于作者版權要求,僅展示文章的一部分,如需閱讀完整版文章,可以私信回複”文章“即可免費擷取。

最後:

1)關注+私信回複:“測試”,可以免費領取一份10G軟體測試工程師面試寶典文檔資料。以及相對應的視訊學習教程免費分享!,其中包括了有基礎知識、Linux必備、Mysql資料庫、抓包工具、接口測試工具、測試進階-Python程式設計、Web自動化測試、APP自動化測試、接口自動化測試、測試進階持續內建、測試架構開發測試架構、性能測試等。