使用jtest工具压测Apache Traffic Server
置頂聲明:下面的內(nèi)容來自于趙永明的ATS博客, 本文是在他的指導(dǎo)和自身實踐基礎(chǔ)上整理而成.這里對豪哥的無私熱心幫助表示無限感激!
一、概述
1.壓力測試的定義很多情況下,大家都希望在服務(wù)器上線前、業(yè)務(wù)上線前,對業(yè)務(wù)的支撐能力做一個測試,希望知道自己的改動是不是在進步,是不是能夠比較平穩(wěn)的抗住預(yù)期的流量壓力,等等,總結(jié)下來壓力測試的主要用途有:
確定新版本的改進不會引起性能問題
找出業(yè)務(wù)的單機qps數(shù)據(jù),并定義好安全的水位線
使用性能數(shù)據(jù)作為硬件采購以及預(yù)算的參數(shù)
更好的理解業(yè)務(wù)的波動對線上系統(tǒng)的壓力
日常開發(fā)中,最最有意義的是,找出新代碼是否在性能上有回退;找出新的性能改進到底提高了多少。
根據(jù)壓力的來源,壓力測試又會被分為:
實驗室仿真壓力測試
實驗室仿真,在http proxy服務(wù)器測試場景下,客戶端和服務(wù)器端的數(shù)據(jù)和請求,都是由工具生成的。
業(yè)務(wù)copy仿真壓力測試
顯然,如果希望服務(wù)器程序真正的能夠在線上跑,簡單的實驗室測試與業(yè)務(wù)需求肯定是差異非常大,因此就有了為什么不把業(yè)務(wù)流量復(fù)制到系統(tǒng)中來的想法。這也就是所謂的流量復(fù)制的壓測方式。
2.jtest與ATS壓力測試
作為一個高性能的proxy代理服務(wù)器,Apache Traffic Server是很難用常用工具進行細(xì)致的性能壓測的,本文嘗試對性能壓測進行定義并介紹如何在這種高性能、高并發(fā)、大規(guī)模的系統(tǒng)中,進行破壞級別的壓力測試。
jtest是一個專門用于proxy/cache系統(tǒng)的實驗室性能壓力測試工具,具有極高的性能。能夠同時擔(dān)當(dāng)后臺服務(wù)器和客戶端。
ATS系統(tǒng)專用的性能壓測工具。
商業(yè)的壓力測試工具,一般也是一個所謂的盒子,自帶客戶端、服務(wù)器端,能夠自己生成模擬流量、copy客戶提交流量等,很像目前jtest的模式最早的jtest被設(shè)計為可以分布式的集群上運行,用上層腳本系統(tǒng)起停,來壓測一個ATS集群系統(tǒng),早先的系統(tǒng)并沒有考慮像現(xiàn)在這樣的多核CPU普遍性。
3.部署原理圖
使用jtest進行測試時,不管是否和ATS在同一臺物理主機上,jtest都是既充當(dāng)源服務(wù)器,又充當(dāng)客戶端這兩種角色,被壓測的ATS充當(dāng)proxy/cache角色,在同一臺服務(wù)器上。對ATS來說,不管正向代理還是反向代理,都可以使用jtest測試。jtest充當(dāng)?shù)脑凑?#xff0c;可以是一個域名,比如“ts.cn”,也可以使用jtest所在主機的hostname。
了解jtest的使用選項
二、jtest和ATS同機壓測
jtest作為專門針對ATS的測試,已經(jīng)就ATS的最簡單配置下,做了很多簡化的默認(rèn)參數(shù),以便于用戶快速的上手,我們以最簡單的本機jtest壓測本機的默認(rèn)配置ATS為例子,介紹最基本的jtest用法:
為了避免測試中出現(xiàn)問題,我們首先確認(rèn)編譯安裝后的ATS的records.config中的如下字段值,比如我的主機
hostname
得到這個相同的值。注意,這個值是ATS編譯時自動生成的,參見records.config.default中的值
根據(jù)這個值,也就是hostname,來設(shè)置remap規(guī)則。
在默認(rèn)的空remap.config中添加如下規(guī)則
map http://taoyx-ThinkPad-T420:9080/ ?http://127.0.0.1:9080/
./jtest
下面是測試結(jié)果
三、jtest和ATS不同機壓測
最通常的做法是jtest和ATS分別位于不同的主機上進行壓測,這里假設(shè)只有一個jtest實例在不同的機器上面,部署環(huán)境參考上面的架構(gòu)圖:
被測試的ATS服務(wù)器 10.10.110.39上面,監(jiān)聽端口8080
jtest所在的服務(wù)器 192.168.90.73,作為源站服務(wù)器角色時,監(jiān)聽端口是9080,hostname是90-73.test.local
我們這里壓測的并非域名,而僅是上面的hostname,為此在被測試的ATS服務(wù)器10.10.110.39的remap.config文件中添加一行
map http://90-73.test.local:9080/ ?http://192.168.90.73:9080/
cd /usr/local/src/trafficserver-4.1.2/tools/jtest
執(zhí)行如下命令
./jtest -P ?10.10.110.39
四、jtest多實例測試
同上思路,但是修改被測試的ATS配置如下:
在remap.config文件末尾添加如下規(guī)則
map http://90-73.test.local:9080/ http://192.168.90.73:9080/
map http:/90-73.test.local:9081/ http://192.168.90.73:9081/
map http://90-73.test.local:9082/ http://192.168.90.73:9082/
在jtest上運行如下命令
./jtest -s 9080 -P 10.10.110.39 & ./jtest -s 9081 -P 10.10.110.39 & ./jtest -s 9082 -P 10.10.110.39
參考文獻
[1].永豪,https://blog.zymlinux.net/index.php/archives/906
總結(jié)
以上是生活随笔為你收集整理的使用jtest工具压测Apache Traffic Server的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python threading模块多线
- 下一篇: sohu广告js代码调研