TCPCopy的安裝和使用

2021-06-21 13:57:20 字數 1865 閱讀 2864

官網位址

tcpcopy 有傳統架構和新架構,新架構比較複雜,一般情況下傳統架構就可以了。

頭部資訊給tcpcopy client,以完成tcp互動,不然tcp包就不能算到達對端。

安裝:tar -zxvf tcpcopy-0.9.0 .tar.gz

cd tcpcopy-0.9.0 

./configure

make

make install

注意:tcpcopy 和 intercept的版本,配置引數要一致

先啟動tcpcopy server (root使用者執行)

1)啟動核心模組ip_queue

#modprobe ip_queue

2)設定要截獲的埠,並且設定對output截獲

#iptables -i output -p tcp --sport -j queue      //注意這裡的port就是伺服器監聽的埠

3)啟動intercept

#intercept

注意:配置好iptbales之後不要去執行service iptables start,不然新加的配置又會被清空了,如果iptables沒有啟動,可以在加規則之前啟動;如果1),2)已經設定並起效的話,只要執行intercept就好了;測試完成之後要呼叫iptables -f 把過濾規則去掉

然後啟動tcp client進行包的**

一些注意事項

1.linux平台,核心2.6+,需要支援netlink機制或者nfqueue(0.6.5+支援nfqueue,在 ./configure 指定nfqueue即可)。

2.tcpcopy中的 tcpcopy 和 intercept 程式執行需要 root 許可權。

3.intercept 在同一臺機器只需要執行乙個例項就能支援多個應用的複製(設定多條 iptables 命令)。

4.tcpcopy client需要連線測試伺服器(預設36524埠),所以要對外開放相應埠。

5.tcpcopy由於依賴於抓包函式,壓力大的時候,抓包函式本身不可靠,所以會丟包,進而丟失請求。

7.通過 cat /proc/net/ip_queue ,檢視 ip_queue 運**況,如果queue dropped的數值不斷增大,則需要修改 ip_queue_maxlen 引數,比如 echo 4096 > /proc/sys/net/ipv4/ip_queue_maxlen ;如果netlink dropped的數值不斷增大,修改 net.core.rmem_max 和 net.core.wmem_max 引數, 比如 sysctl -w net.core.rmem_max=16777216 和 sysctl -w net.core.wmem_max=16777216 。

8.如果要複製127.0.0.1發出的請求到另外一台機器,需要設定 -c 引數。

10.tcpcopy只與ip、tcp層的資料有關,如果請求驗證與tcp層以上的協議有關,則系統不能正常執行。例如:mysql連線協議,由於許可權認證與tcp層上面的mysql協議有關,所以複製過去的請求會被目標測試伺服器認為非法請求,這個時候需要針對mysql協議作具體針對性的處理,tcpcopy程式才能正常執行。

12.丟失請求率跟網路狀況有關,最好在內網內複製請求。

13.本系統不支援網域名稱,只支援ip位址。

14.為了避免不必要的麻煩,關閉的時候先關閉 tcpcopy ,然後再關閉 intercept 。

15.如果需要在測試伺服器上對某些ip位址的包不進行過濾,則intercept -x ip位址1,ip位址2,表示ip1 和 ip2的包可以正常返回

16.tcpcopy可以編譯成用libpcap抓包或者使用raw socket抓包。libpcap庫是tcpdump使用的抓包庫,raw socket是作業系統內建的功能。建議用libpcap抓包,以獲得更高效能和較低丟包率

TCPcopy使用示例

最近在公司弄乙個頻繁gc的問題,以下是我提的第乙個建議,但公司環境不允許這樣實行 生產環境管理及其嚴格,而且涉及呼叫其他服務的問題 現記錄如下。tcpcopy最開始是網易開發的用於廣告投放系統的乙個測試工具,能夠進行分布式壓力測試,普通上線測試,流量放大測試等,其測試資料比較真實。下面以圖形說明tc...

使用tcpcopy匯入線上流量進行功能和壓力測試

假設我們要上線乙個兩年內不會宕機的先進架構。在上線前,免不了單元測試,功能測試,還有使用ab,webbench等等進行壓力測試。但這些步驟非生產環境下正式使用者的行為。或許你會想到灰度上線,但畢竟可能會影響到部分使用者,這怎麼對得起我們兩年內不宕機的承諾呢?好在網易的 王斌 開發了tcpcopy,可...

使用tcpcopy匯入線上流量進行功能和壓力測試

假設我們要上線乙個兩年內不會宕機的先進架構。在上線前,免不了單元測試,功能測試,還有使用ab,webbench等等進行壓力測試。但這些步驟非生產環境下正式使用者的行為。或許你會想到灰度上線,但畢竟可能會影響到部分使用者,這怎麼對得起我們兩年內不宕機的承諾呢?好在網易的 王斌 開發了tcpcopy,可...