官網位址
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,可...