tcpcopy是一個(gè)基于底層的應(yīng)用請求復(fù)制(所有基于tcp的packets)開源項(xiàng)目,可用于替代ab做在線模擬壓力測試,可轉(zhuǎn)發(fā)各種在線請求到測試服務(wù)器上,進(jìn)行較為詳盡的近乎實(shí)際的測試,從而避免了新業(yè)務(wù)、系統(tǒng)上線帶來的潛在問題。
tcpcopy的四大功能:
1)分布式壓力測試,將多個(gè)前段請求集中到某個(gè)后端進(jìn)行壓力測試
2)上線前測試,檢驗(yàn)新系統(tǒng)可靠性,提前發(fā)現(xiàn)潛在問題
3)對比測試,同樣請求,針對不同或不同版本程序,可以做性能對比等試驗(yàn)
4)應(yīng)用熱備份,對于后端的短連接,請求丟失率非常低(1/10萬)
tcpcopy具有以下幾個(gè)特點(diǎn):
1)實(shí)時(shí)轉(zhuǎn)發(fā)
2)近乎真實(shí)效果
3)對在線系統(tǒng)影響很小
4)操作簡單
5)分布式
6)意義非凡
使用tcpcopy非常簡單,下載源碼,編譯,按照說明,幾個(gè)步驟很快就能使用。
關(guān)于tcpcopy使用的一些注意事項(xiàng)有:
1)Linux平臺(tái),內(nèi)核2.6+
2)TCPCOPY類似于UDP,所以會(huì)丟包,進(jìn)而丟失請求
3)本系統(tǒng)不支持域名,只支持ip地址
4)Local Requests,請?jiān)O(shè)置lo MTU不超過1500,并且在配置文件中不要設(shè)置127.0.0.1地址,
要設(shè)置內(nèi)網(wǎng)或者外網(wǎng)地址
5)TCPCOPY server有可能會(huì)成為性能瓶頸
6)丟失請求率跟網(wǎng)絡(luò)狀況有關(guān),最好在內(nèi)網(wǎng)內(nèi)復(fù)制請求
7)TCPCOPY中的tcpcopy和interception程序運(yùn)行需要root權(quán)限
8)TCPCOPY只與ip、tcp層的數(shù)據(jù)有關(guān),如果請求驗(yàn)證與tcp層以上的協(xié)議有關(guān),則系統(tǒng)不能正常運(yùn)行。
例如:mysql連接協(xié)議,由于權(quán)限認(rèn)證與tcp層上面的mysql協(xié)議有關(guān),所以復(fù)制過去的請求會(huì)被目
標(biāo)測試服務(wù)器認(rèn)為非法請求,這個(gè)時(shí)候需要針對mysql協(xié)議作具體針對性的處理,tcpcopy程序才能正常運(yùn)行
9)程序更新非常快,所以最新版本在svn上面
svn checkouthttp://tcpcopy.googlecode.com/svn/trunk/tcpcopy
10)目前追求的是功能,性能優(yōu)化和代碼重構(gòu)會(huì)在穩(wěn)定以后進(jìn)行
11)長response目前支持不是很好,將在下一個(gè)版本改進(jìn)
12)如果有問題,請注意error.log文件提示的錯(cuò)誤信息 (email:163.beijing@gmail.com)
13)源代碼已經(jīng)轉(zhuǎn)到github
除了這些,下面是我在用tcpcopy測試mysql時(shí)的一些小結(jié):
1) 測試MySQL時(shí),測試機(jī)需要開啟 skip-grant-tables,否則無法正常進(jìn)行,因?yàn)镸ySQL需要進(jìn)行認(rèn)證;在線服務(wù)器無需調(diào)整
2) 測試過程中不能執(zhí)行flush privileges,否則上述選項(xiàng)會(huì)失效
3) 每次啟用tcpcopy時(shí),都需要重啟mysqld,不能在線直接應(yīng)用,否則不能轉(zhuǎn)發(fā)包(最新版本已經(jīng)解決這個(gè)問題)
4) 用sysbench進(jìn)行測試過程中,prepare時(shí),在線服務(wù)器能創(chuàng)建測試表,測試機(jī)無法創(chuàng)建新表
5) 需適當(dāng)調(diào)大內(nèi)核參數(shù):ip_queue_maxlen,否則會(huì)出現(xiàn)大量的queue dropped
6) 無法完全保證在線服務(wù)器和測試機(jī)的數(shù)據(jù)一致性,只能做為模擬線上壓力,提前進(jìn)行bug測試等用途
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com