溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

淺談壓測(cè)之一Tcpcopy流量導(dǎo)入

發(fā)布時(shí)間:2020-06-13 17:33:46 來(lái)源:網(wǎng)絡(luò) 閱讀:17898 作者:xixi521874 欄目:軟件技術(shù)

      很長(zhǎng)時(shí)間不更新博客了。最近做一些壓力測(cè)試(流量實(shí)時(shí)導(dǎo)入與離線(xiàn)回放)、內(nèi)網(wǎng)源(含全部centos、EPEL)、自制RPM包等事情了。個(gè)人有點(diǎn)淺顯的理解,如各位看官對(duì)以上感興趣,留言告訴我,后面會(huì)選擇性更新出來(lái),相信對(duì)各位都是比較有用的。

      本文用較短篇幅介紹Tcpcopy的流量導(dǎo)入,后續(xù)會(huì)再更新一篇離線(xiàn)模式使用。

      一個(gè)完善的網(wǎng)站、系統(tǒng),上線(xiàn)前必須經(jīng)過(guò)完備的壓力測(cè)試,這是基本的質(zhì)量保證。在測(cè)試過(guò)程中,我們使用過(guò) AB、Loadrunner效果都不理想,無(wú)法精確還原用戶(hù)請(qǐng)求。后來(lái)我們使用了網(wǎng)易開(kāi)源的Tcpcopy,還原了真實(shí)流量,以及離線(xiàn)流量按需回放等功能,對(duì)新業(yè)務(wù)的上線(xiàn)起了至關(guān)重要的作用。

簡(jiǎn)介:

Tcpcopy是一種請(qǐng)求復(fù)制(所有基于tcp的packets)工具,可以把在線(xiàn)流量導(dǎo)入到測(cè)試系統(tǒng)中去。

曾經(jīng)應(yīng)用于網(wǎng)易的廣告投放系統(tǒng),urs系統(tǒng),nginx hmux協(xié)議等系統(tǒng),避免了上線(xiàn)帶來(lái)的很多問(wèn)題。

現(xiàn)在此工具已經(jīng)廣泛應(yīng)用于各大互聯(lián)網(wǎng)公司。tcpcopy鼻祖王波同學(xué)(@wbo65),是他在這方面進(jìn)行了最初探索。(2009年設(shè)計(jì)并代碼實(shí)現(xiàn),僅僅300多行代碼就支撐了網(wǎng)易廣告投放系統(tǒng)的最初開(kāi)發(fā),上線(xiàn)零失誤,解決上線(xiàn)前數(shù)百個(gè)問(wèn)題),當(dāng)然這個(gè)最簡(jiǎn)單的版本應(yīng)用范圍非常有限,王斌(@wangbin579)在2010年末在這個(gè)架構(gòu)上面進(jìn)行了深度改造,擴(kuò)展到1000多行代碼)。最新版本1.0.0。

功能:

1)分布式壓力測(cè)試工具,利用在線(xiàn)數(shù)據(jù),可以測(cè)試系統(tǒng)能夠承受的壓力大?。ㄟh(yuǎn)比ab壓力測(cè)

試工具真實(shí)地多),也可以提前發(fā)現(xiàn)一些bug

2)普通上線(xiàn)測(cè)試,可以發(fā)現(xiàn)新系統(tǒng)是否穩(wěn)定,提前發(fā)現(xiàn)上線(xiàn)過(guò)程中會(huì)出現(xiàn)的諸多問(wèn)題,讓開(kāi)

發(fā)者有信心上線(xiàn)

3)流量放大功能,可以利用多種手段構(gòu)造無(wú)限在線(xiàn)壓力,滿(mǎn)足中小網(wǎng)站壓力測(cè)試要求

架構(gòu):

1.0.0版本架構(gòu)如下圖,

淺談壓測(cè)之一Tcpcopy流量導(dǎo)入

上述架構(gòu),也即最新架構(gòu),是為了極限測(cè)試的目的而設(shè)計(jì)的,把intercept的工作從測(cè)試服務(wù)器(test server)中offload出來(lái),放到另外一臺(tái)獨(dú)立的輔助服務(wù)器(assistant server,原則上一定要用同網(wǎng)段的一臺(tái)閑置的服務(wù)器來(lái)充當(dāng)輔助服務(wù)器)上面進(jìn)行截獲響應(yīng)包,而且把原先從IP層捕獲響應(yīng)數(shù)據(jù)包的工作轉(zhuǎn)移到從數(shù)據(jù)鏈路層抓響應(yīng)包,這些改變大大降低了對(duì)測(cè)試機(jī)器的各種干擾(除了路由設(shè)置,其它已經(jīng)沒(méi)有影響了),而且大大擴(kuò)大了捕獲響應(yīng)包的能力。當(dāng)然這種測(cè)試也更加真實(shí)。

部署:

此環(huán)境準(zhǔn)備三臺(tái)機(jī)器,假設(shè)我們需要導(dǎo)入Apache的80口流量,Apache安裝過(guò)程省略。如對(duì)上圖理解有困難,我畫(huà)了一張簡(jiǎn)明草圖方便你理解

淺談壓測(cè)之一Tcpcopy流量導(dǎo)入

一、正式節(jié)點(diǎn)  1.1.1.1 安裝httpd tcpcopy

二、測(cè)試節(jié)點(diǎn)  1.1.1.2 安裝httpd 

三、輔助節(jié)點(diǎn)  1.1.1.3 安裝intercept

安裝tcpcopy
cd /tmp
wget https://github.com/session-replay-tools/tcpcopy/archive/1.0.0.tar.gz
tar -zxvf 1.0.0.tar.gz
./configure --prefix=/usr/local/tcpcopy
make
make install 
vi /etc/profile.d/tcpcopy.sh
#加入下面一行
export PATH=$PATH:/usr/local/tcpcopy/sbin
source /etc/profile.d/tcpcopy.sh


安裝intercept
yum install libpcap-devel 
cd /tmp
wget https://github.com/session-replay-tools/intercept/archive/1.0.0.tar.gz
tar -zxvf 1.0.0.tar.gz
./configure --prefix=/usr/local/intercept
make
make install 
vi /etc/profile.d/intercept.sh
#加入下面一行
export PATH=$PATH:/usr/local/intercept/sbin
source /etc/profile.d/intercept.sh


#正式環(huán)境中運(yùn)行,將外部訪(fǎng)客的IP轉(zhuǎn)換為192.168.10.0/24,方便測(cè)試機(jī)設(shè)置路由
tcpcopy -x 80-1.1.1.2:80 -s 1.1.1.3 -c 192.168.10.x &
#測(cè)試環(huán)境中添加路由
route add -net 192.168.10.0 netmask 255.255.255.0 gw 1.1.1.3
#輔助環(huán)境中運(yùn)行,攔截80請(qǐng)求并丟棄
intercept -i eth0 -F 'tcp and src port 80' -d

效果:

用瀏覽器訪(fǎng)問(wèn)真實(shí)節(jié)點(diǎn)時(shí),查看測(cè)試節(jié)點(diǎn)access_log是否滾動(dòng)。

淺談壓測(cè)之一Tcpcopy流量導(dǎo)入

總結(jié):

再次感謝Tcpcopy的開(kāi)源作者(@wangbin579)的無(wú)私奉獻(xiàn)。如有問(wèn)題可留言回復(fù),希望能幫到你。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI