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

下一個 release 準備小長假后就要 go-live ,所有的測試 case 都 cover 過了,但還未進行過壓力測試,有點不放心,剛好過節(jié)期間家人都回家去了,假期終于可以抽點時間壓測一把。

Apache ab 壓測

之前用過一些壓力測試工具比如 loadrunner, Jmeter,感覺都太重,想要使用不是軟件需要注冊就是使用起來很不得心應(yīng)手,這次靈光一動,想到直接使用 ab + OneAPM 進行測試,ab 的全稱是 ApacheBench , 是 apache http server 自帶的一個測試工具,專門用于 HTTP Server 的 benchmark testing,可以同時模擬多個并發(fā)請求。公司的開發(fā)人員也在用它作一些測試,看起來也不錯,很簡單,也很容易使用??梢詫δ愕?Web 站點進行壓力測試,非常小,使用起來很簡單。

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

OneAPM

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

<table>
<tbody>
<tr>
<td>環(huán)境:</td>
<td>內(nèi)網(wǎng)測試服務(wù)器</td>
</tr>
<tr>
<td>語言:</td>
<td>Ruby </td>
</tr>
<tr>
<td> Framework: </td>
<td>ror </td>
</tr>
<tr>
<td>數(shù)據(jù)庫: </td>
<td>MongoDB </td>
</tr>
</tbody>
</table>
總共進行了兩輪壓測, 測試方式及結(jié)果:

  • 第一輪: 每秒大概 30 個并發(fā), 單頁面訪問
  • 第二輪:并發(fā)量每秒提升到 100,分別訪問 4 個主頁面

使用 ab 進行測試的方式:

ab -n 1000 -c 30 <your url>

-n 是指總的 request 數(shù)量,-c 是指同一時間并發(fā)量

以下是在添加了OneAPM Ruby agent之后,使用 apache ab 壓測結(jié)果。

總體拓撲

OneAPM 通過拓撲圖來展示應(yīng)用的端到端調(diào)用關(guān)系、應(yīng)用服務(wù)器與數(shù)據(jù)庫、外部 服務(wù)的調(diào)用關(guān)系以及應(yīng)用之間的調(diào)用關(guān)系。同時,通過在拓撲圖中將相應(yīng)模塊標記成不同顏色。

由于只是壓測,就沒有在測試環(huán)境部署相關(guān)的后臺任務(wù),也沒做集群以及 LA , 在我們的 prod 環(huán)境中,是有座 cluster 及 Load balance。

總覽

30 并發(fā) /s 的平均響應(yīng)時間在 200ms 左右,而一旦提升到 100 并發(fā) /s,響應(yīng)時間瞬間飆升到 800~900ms 左右,對于一個目前 pv 還不算高的網(wǎng)站,還可以接受,但也還有提升空間。


Web 事務(wù)

數(shù)據(jù)庫

MongoDB 在單機壓力測試下表現(xiàn)還可以,如果說整體上整個站點要在優(yōu)化性能的話,主要就是在 framework 上。

RubyVM

這個對于實時監(jiān)控挺有用,但是這個僅僅是適用 vm 以及 ruby gc 的一些統(tǒng)計,如果能加入對 ruby container 的監(jiān)控就更好了,因為我遇到過很多次,web 緩慢或者癱瘓的時候,幾次都是因為 ruby container 內(nèi)存溢出,導致宕機。但是對這塊的監(jiān)控就比在 ruby 或者 ror 中加探針要復雜很多了。


結(jié)論

OneAPM 除了用于定位應(yīng)用線上的問題,還配合使用 ab 壓測在項目上線前提早預知一些可能的性能瓶頸,OneAPM 的 Dashboard 就是一個很好的壓測結(jié)果報告,壓測前后的性能差異一目了然,不需在通過一些命令再去對比 Response time 之類的數(shù)據(jù),總之省力很多。

比較傳統(tǒng)的方式是下圖這樣對比性能,編輯 bench 了一個 url 之后得到輸出結(jié)果:

客觀的從純性能的角度出發(fā),在生產(chǎn)環(huán)境中,Ruby 還是只適合 Small Business 。對與壓力較高的服務(wù)或應(yīng)用,就必須投入大量額外的硬件資源才能維持。

最后的最后:不要在正式環(huán)境做壓力測試!??!

本文系國內(nèi) ITOM 行業(yè)領(lǐng)軍企業(yè) OneAPM 經(jīng)授權(quán)轉(zhuǎn)載自 cnode 社區(qū)。想閱讀更多技術(shù)文章,請訪問 OneAPM 官方技術(shù)博客。

本文轉(zhuǎn)自 OneAPM 官方博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容