主頁 > 知識庫 > Linux服務(wù)器上安裝使用TCPCopy來獲取用戶訪問流量

Linux服務(wù)器上安裝使用TCPCopy來獲取用戶訪問流量

熱門標(biāo)簽:美團(tuán) 百度競價點擊價格的計算公式 家政服務(wù)網(wǎng)絡(luò) 電話機(jī)器人搭建 硅谷的囚徒呼叫中心 服務(wù)器配置 解決方案 外呼系統(tǒng)

 tcpcopy可以當(dāng)做一種壓力測試工具,也可以獲取真實的用戶訪問流量,從而模擬真實運行環(huán)境,tcpcopy的開發(fā)者這樣介紹它: TCPCopy是一種請求復(fù)制(所有基于tcp的packets)工具,其應(yīng)用領(lǐng)域較廣,利用TCPCopy程序,可以把訪問memcached的系統(tǒng)流量復(fù)制一份到membase系統(tǒng)中去。對于membase來說,這份流量就是訪問membase的,跟直接上線
membase效果一樣,就可以做各種試驗,查看membase的各種特性。
     主要有以下功能
      1)分布式壓力測試工具,利用在線數(shù)據(jù),可以測試系統(tǒng)能夠承受的壓力大小,也可以提前發(fā)現(xiàn)一些bug
      2)普通上線測試,可以發(fā)現(xiàn)新系統(tǒng)是否穩(wěn)定,提前發(fā)現(xiàn)上線過程中會出現(xiàn)的諸多問題,讓開
發(fā)者有信心上線
      3)對比試驗,同樣請求,針對不同或不同版本程序,可以做性能對比等試驗
      4)流量放大功能,可以利用多種手段構(gòu)造無限在線壓力,滿足中小網(wǎng)站壓力測試要求
      5)利用TCPCopy轉(zhuǎn)發(fā)傳統(tǒng)壓力測試工具發(fā)出的請求,可以增加網(wǎng)絡(luò)延遲,使其壓力測試更加真實
      6)熱備份
      7)實戰(zhàn)演習(xí)(架構(gòu)師必備)
    

安裝:


復(fù)制代碼
代碼如下:

tar -zxvf tcpcopy-0.9.0 .tar.gz
cd tcpcopy-0.9.0
./configure
make
make install

注意:tcpcopy 和 intercept的版本,配置參數(shù)要一致

現(xiàn)在的代碼已經(jīng)放在github(https://github.com/session-replay-tools/tcpcopy)上了,1.0 以上的版本,tcpcopy 和 intercept 包已經(jīng)分開了,需要單獨下載安裝,注意,如果在安裝intercept的時候 ./configure報錯checking for pcap.h … not found,可以 通過yum install libpcap-devel解決。


            TCPCopy分為TCPCopy client和TCPCopy server。其中TCPCopy client運行在在線服務(wù)器上面,用來捕獲在線請求數(shù)據(jù)包;TCPCopy server(監(jiān)聽端口為36524)運行在測試機(jī)器上面,在測試服務(wù)器的響應(yīng)包丟棄之前截獲測試服務(wù)器
的響應(yīng)包,并通過TCPCopy client和TCPCopy server之間的tcp連接傳遞響應(yīng)包的tcp和ip頭部信息給TCPCopy client,以完成TCP交互。

      使用方法如下:
         TCPCopy server (root用戶執(zhí)行)
             1)啟動內(nèi)核模塊ip_queue (modprobe ip_queue)
             2)設(shè)置要截獲的端口,并且設(shè)置對output截獲
                 

復(fù)制代碼
代碼如下:
iptables -I OUTPUT -p tcp --sport port -j QUEUE

             3)interception


         TCPCopy client   (root用戶執(zhí)行)
               tcpcopy 本地ip地址1[:本地ip地址2:…]  本地port  遠(yuǎn)程ip地址 遠(yuǎn)程port

      試用:
            模擬抓取apache的訪問流量。試用之前清空apache的訪問日志。線上機(jī)器:10.1.6.205,線下機(jī)器:10.1.6.206。
       操作Client-VM2

復(fù)制代碼
代碼如下:

modprobe ip_queue
iptables -I OUTPUT -p tcp --sport 80 -j QUEUE
interception

      操作Client-VM1

復(fù)制代碼
代碼如下:

tcpcopy 10.1.6.205 80 10.1.6.206 80

作者交待了一些注意事項:

 1)Linux平臺,內(nèi)核2.6+,需要支持netlink機(jī)制

2)TCPCopy中的tcpcopy和interception程序運行需要root權(quán)限

3)interception在同一臺機(jī)器只需要要運行一個實例,多個實例還不支持

4)TCPCopy client需要連接測試服務(wù)器的36524端口,所以要對外開放36524端口

5)TCPCopy由于依賴于抓包函數(shù),壓力大的時候,抓包函數(shù)本身不可靠,所以會丟包,

進(jìn)而丟失請求

6)由于interception程序密切跟ip queue內(nèi)核模塊相關(guān),所以當(dāng)壓力很大的時候請求

丟失率很高,需要優(yōu)化sysctl系統(tǒng)參數(shù)才能達(dá)到好的效果(通過cat /proc/net/ip_queue,

查看ip queue運行情況,如果Queue dropped的數(shù)值不斷增大,則需要修改ip_queue_maxlen參數(shù),

比如echo 4096 > /proc/sys/net/ipv4/ip_queue_maxlen;

如果Netlink droppedde的數(shù)值不斷增大,修改net.core.rmem_max和net.core.wmem_max參數(shù),

比如sysctl -w net.core.rmem_max=16777216和sysctl -w net.core.wmem_max=16777216)

7)復(fù)制同一臺機(jī)器進(jìn)程之間的請求,也即Local Requests,請設(shè)置lo MTU不超過1500,

并且在配置文件中不要設(shè)置127.0.0.1地址,要設(shè)置內(nèi)網(wǎng)或者外網(wǎng)地址

8)TCP segmentation offloading相關(guān)問題(要注意網(wǎng)卡tso和gro要關(guān)閉)

如果tcpcopy所抓的數(shù)據(jù)包大小超過MTU,那么由于raw socket output的原因,需要你

改變在線設(shè)置,比如:ethtool -K eth1 tso off ; ethtool -K eth1 gro off

9)TCPCopy server,也即interception程序有可能會成為性能瓶頸,特別是對大數(shù)據(jù)響應(yīng)這種情況

10)測試環(huán)境最好和在線環(huán)境一致,比如連接都保持keepalive

11)TCPCopy只與ip、tcp層的數(shù)據(jù)有關(guān),如果請求驗證與tcp層以上的協(xié)議有關(guān),則系統(tǒng)不能正常運行。

例如:mysql連接協(xié)議,由于權(quán)限認(rèn)證與tcp層上面的mysql協(xié)議有關(guān),所以復(fù)制過去的請求會被目

標(biāo)測試服務(wù)器認(rèn)為非法請求,這個時候需要針對mysql協(xié)議作具體針對性的處理,tcpcopy程序才能正常運行

12)多層架構(gòu)環(huán)境下,測試系統(tǒng)一定要獨立,與在線系統(tǒng)沒有業(yè)務(wù)關(guān)聯(lián),否則會影響在線

13)丟失請求率跟網(wǎng)絡(luò)狀況有關(guān),最好在內(nèi)網(wǎng)內(nèi)復(fù)制請求

14)本系統(tǒng)不支持域名,只支持ip地址

15)針對長請求(比如上傳文件),本系統(tǒng)不是很支持,預(yù)計0.5版本會支持

16)客戶端ip地址為內(nèi)網(wǎng)ip地址,一般情況下其應(yīng)用請求是無法復(fù)制到外網(wǎng)測試機(jī)器上面去的。

17)為了避免不必要的麻煩,關(guān)閉的時候先關(guān)閉tcpcopy,然后再關(guān)閉interception

 

標(biāo)簽:防城港 撫州 臨沂 邢臺 韶關(guān) 南昌 北海 烏蘭察布

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Linux服務(wù)器上安裝使用TCPCopy來獲取用戶訪問流量》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266