最近在公司弄乙個頻繁gc的問題,以下是我提的第乙個建議,但公司環境不允許這樣實行(生產環境管理及其嚴格,而且涉及呼叫其他服務的問題),現記錄如下。
tcpcopy最開始是網易開發的用於廣告投放系統的乙個測試工具,能夠進行分布式壓力測試,普通上線測試,流量放大測試等,其測試資料比較真實。
下面以圖形說明tcpcopy的原理
1.下圖是乙個典型的web應用伺服器的示例,使用者請求過來後,達到web應用,web應用處理完請求後,通過網路傳輸給請求發起者。
由於生產環境的限制比較嚴格,不能在生產環境下進行有效測試和獲取足夠的執行資料,在測試環境下能夠獲取更多的資料,但測試環境中的資料不夠真實,難以復現生產環境下出現的各種問題。tcpcopy打通了生產環境和測試環境之間的通道。下圖是加入了tcpcopy的生產伺服器和測試伺服器:
使用tcpcopy時,首先需要在生產伺服器上安裝tcpcopyclient,然後在測試伺服器上安裝tcpcopyserver。
2. 使用者請求到達線上前端機,
3. socket包在ip層被拷貝了乙份,傳給tcpcopy程序,
4. tcpcopy修改包的目的及源位址,發給測試前端機
5. 測試前端機接收資料報,處理請求,並返回結果
6. 返回結果在ip層被攔截、丟棄, tcpcopyserver拷貝返回資料報的ip header返回
7. ip header被傳送給線上前端機的tcpcopy程序。
假設有兩台機器:
機器a:線上前端機,ip:192.168.1.100;
機器b:測試前端機,ip:192.168.1.200;
在兩台機器上都有sudo許可權
1. 在b依次執行:
a) modprobe ip_queue 載入ip_queue模組
b) sudo iptables –t filter –loutput –p tcp –sport 80 –j queue 配置iptables規則
c) sudo ./interception& 啟動tcpcopy伺服器
2. 在a上執行:
a) sudo ./tcpcopy 192.168.1.100 80192.168.1.200 80 & 啟動tcpcopy客戶端
如果在a上看到」i am booted」,則表示操作成功,tcpcopy已經開始工作。
TCPCopy的安裝和使用
官網位址 tcpcopy 有傳統架構和新架構,新架構比較複雜,一般情況下傳統架構就可以了。頭部資訊給tcpcopy client,以完成tcp互動,不然tcp包就不能算到達對端。安裝 tar zxvf tcpcopy 0.9.0 tar.gz cd tcpcopy 0.9.0 configure m...
tcpcopy1 0系列使用方法
新舊架構詳細對比 tcpcopy執行需要intercept的支援,tcpcopy負責抓包和發包工作,而intercept負責截獲應答包 git clone configure configure 預設raw socket方式抓包 或者.configure pcap capture pcap方式抓包,...
tcpcopy1 0系列使用方法
新舊架構詳細對比 tcpcopy執行需要intercept的支援,tcpcopy負責抓包和發包工作,而intercept負責截獲應答包 git clone configure configure 預設raw socket方式抓包 或者.configure pcap capture pcap方式抓包,...