標籤:
Tcpcopy簡介
TCPCopy是一種提取複寫(所有基於tcp的packets)工具 ,其功能是複製線上資料包,修改TCP/IP頭部資訊,發送給測試伺服器,達到欺騙測試伺服器的TCP 程式的目的,從而為欺騙上層應用打下堅實基礎。
TCPCopy七大功能
- 1)分布式壓力測試工具,利用線上資料,可以測試系統能夠承受的壓力大小(遠比ab壓力測試工具真實地多),也可以提前發現一些bug
- 2)普通上線測試,可以發現新系統是否穩定,提前發現上線過程中會出現的諸多問題,讓開發人員有信心上線
- 3)對比實驗,同樣請求,針對不同或不同版本程式,可以做效能對比等實驗
- 4)流量放大功能,可以利用多種手段構造無限線上壓力,滿足中小網站壓力測試要求
- 5)利用TCPCopy轉寄傳統壓力測試工具發出的請求,可以增加網路延遲,使其壓力測試更加真實
- 6)熱備份
- 7)實戰演習(架構師必備)
TCPCopy分為TCPCopy client和TCPCopy server
其中TCPCopy client運行在線上服務器上面,用來捕獲線上請求資料包;TCPCopy server(監聽連接埠為36524)運行在測試機器上面,在測試伺服器的響應包丟棄之前截獲測試伺服器的響應包,並通過TCPCopy client和TCPCopy server之間的tcp串連傳遞響應包的tcp和ip
頭部資訊給TCPCopy client,以完成TCP互動。
啟動tcpcopy
TCPCopy server (root使用者執行)
1)啟動核心模組ip_queue
#modprobe ip_queue
2)設定要截獲的連接埠,並且設定對output截獲
#iptables -I OUTPUT -p tcp --sport <port> -j QUEUE
3)啟動intercept
intercept
注意:
1.如果已經啟動ip_queue和已經設定iptables,只需要運行第3項;
iptables --list
2.測試完以後要記得刪除上面設定的iptables條目
清空iptables:
iptables -F
3.為了避免不必要的麻煩,關閉的時候先關閉tcpcopy,然後再關閉intercept
TCPCopy client (root使用者執行)
tcpcopy 0.6版本
./tcpcopy -x 伺服器應用連接埠號碼-測試伺服器ip地址:測試伺服器應用連接埠
-n 參數
進行多重複製,此參數的值就是代表複製過去的流量是線上的n 倍
其他參數請參看文檔
Tcpcopy實戰
我測試的項目是一個基於RFID的物聯網採集項目,採集的主要功能是接收基站發過來的TCP資料對其進行解析,分發。當時選工具的時候也考慮了好幾個,Jmeter好像沒有這方面功能,而LoadRunner的windows sockets又相對複雜,所以選擇了簡單易用的tcpcopy。
測試環境
2台ubuntu/linux機器,一台作為線上服務器,用來接收真實的基站資訊,一台用來做測試伺服器,用來承受線上服務器流量翻倍後的壓力。線上服務器使用4001連接埠,為了保持一致,測試伺服器也使用該連接埠。
tcpcopy 0.6
nethogs 用來監控流量
tcpcopy安裝:
tar -zxvf tcpcopy-0.6.0 .tar.gzcd tcpcopy-0.6.0./configuremakemake install
第一步:設定靜態IP
設定靜態IP是為了以後測試方便,可以略過
/etc/netword/interfaces中加入
auto eth0 #網卡iface eth0 inet staticaddress 192.168.0.94 #IP地址gateway 192.168.0.254 #網關netmask 255.255.255.0 #子網路遮罩
/etc/NetworkManager/NetworkManager.conf 中設定
[ifupdown]managed=true
第二步:啟動線上服務器和測試伺服器上的測試程式第三步:啟動測試伺服器上的intercept
#modprobe ip_queue#iptables -I OUTPUT -p tcp --sport <port> -j QUEUE #intercept
第四步:啟動線上服務器上的tcpcopy
#tcpcopy -x <port>-192.168.0.96:<port> -n 100
第五步:通過nethogs查看壓力是否上來
nethogs安裝:
#apt-get install nethogs
nethogs使用:
#nethogs eth0
線上服務器上java程式流量:
測試服務區上java程式流量:
通過對比可以看出,tcpcopy產生的壓力上來了。
相關下載:
- Tcpcopy 0.6 傳送門
- Tcpcopy 文檔 傳送門
[轉]Tcpcopy簡介與實戰