如何使用 Apache ab 以及 OneAPM 進行壓力測試?

下一個 release 準備小長假後就要 go-live ,全部的測試 case 都 cover 過了,但還未進行過壓力測試,有點不放心,恰好過節期間家人都回家去了,假期終於能夠抽點時間壓測一把。php

Apache ab 壓測

以前用過一些壓力測試工具好比 loadrunner, Jmeter,感受都過重,想要使用不是軟件須要註冊就是使用起來很不駕輕就熟,此次靈光一動,想到直接使用 ab + OneAPM 進行測試,ab 的全稱是 ApacheBench , 是 apache http server 自帶的一個測試工具,專門用於 HTTP Server 的 benchmark testing,能夠同時模擬多個併發請求。公司的開發人員也在用它做一些測試,看起來也不錯,很簡單,也很容易使用。能夠對你的 Web 站點進行壓力測試,很是小,使用起來很簡單。html

若是你已經安裝了 apache,那麼在 <apache>/bin 目錄就能找到 ab,輸入 ap --help `, 裏面簡單幾個選項仔細讀一下,很快就能上手進行測試。官方使用文檔:https://httpd.apache.org/docs/2.4/programs/ab.htmljava

OneAPM

這個就不用多說了,性能監控軟件,如何使用參看下官網的 guide,我分別在不一樣的平臺上都試過接入 OneAPM,好比 node.js,ruby,php,java,使用起來挺簡單方便的。node

<table> <tbody> <tr> <td>環境:</td> <td>內網測試服務器</td> </tr> <tr> <td>語言:</td> <td>Ruby </td> </tr> <tr> <td> Framework: </td> <td>ror </td> </tr> <tr> <td>數據庫: </td> <td>MongoDB </td> </tr> </tbody> </table> 總共進行了兩輪壓測, 測試方式及結果:web

  • 第一輪: 每秒大概 30 個併發, 單頁面訪問
  • 第二輪:併發量每秒提高到 100,分別訪問 4 個主頁面

使用 ab 進行測試的方式:數據庫

ab -n 1000 -c 30 <your url> apache

-n 是指總的 request 數量,-c 是指同一時間併發量ruby

如下是在添加了OneAPM Ruby agent以後,使用 apache ab 壓測結果。服務器

整體拓撲

OneAPM 經過拓撲圖來展現應用的端到端調用關係、應用服務器與數據庫、外部 服務的調用關係以及應用之間的調用關係。同時,經過在拓撲圖中將相應模塊標記成不一樣顏色。併發

因爲只是壓測,就沒有在測試環境部署相關的後臺任務,也沒作集羣以及 LA , 在咱們的 prod 環境中,是有座 cluster 及 Load balance。

總覽

30 併發 /s 的平均響應時間在 200ms 左右,而一旦提高到 100 併發 /s,響應時間瞬間飆升到 800~900ms 左右,對於一個目前 pv 還不算高的網站,還能夠接受,但也還有提高空間。

Web 事務

數據庫

MongoDB 在單機壓力測試下表現還能夠,若是說總體上整個站點要在優化性能的話,主要就是在 framework 上。

RubyVM

這個對於實時監控挺有用,可是這個僅僅是適用 vm 以及 ruby gc 的一些統計,若是能加入對 ruby container 的監控就更好了,由於我遇到過不少次,web 緩慢或者癱瘓的時候,幾回都是由於 ruby container 內存溢出,致使宕機。可是對這塊的監控就比在 ruby 或者 ror 中加探針要複雜不少了。

結論

OneAPM 除了用於定位應用線上的問題,還配合使用 ab 壓測在項目上線前提前預知一些可能的性能瓶頸,OneAPM 的 Dashboard 就是一個很好的壓測結果報告,壓測先後的性能差別一目瞭然,不需在經過一些命令再去對比 Response time 之類的數據,總之省力不少。

比較傳統的方式是下圖這樣對比性能,編輯 bench 了一個 url 以後獲得輸出結果:

客觀的從純性能的角度出發,在生產環境中,Ruby 仍是隻適合 Small Business 。對與壓力較高的服務或應用,就必須投入大量額外的硬件資源才能維持。

最後的最後:不要在正式環境作壓力測試!!!

本文系國內 ITOM 行業領軍企業 OneAPM 經受權轉載自 cnode 社區。想閱讀更多技術文章,請訪問 OneAPM 官方技術博客

本文轉自 OneAPM 官方博客

相關文章
相關標籤/搜索