tcpcopy,模擬在線壓力測試的好幫手

發表于:2012-04-13來源:伯樂在線作者:yejr點擊數: 標簽:壓力測試
tcpcopy是一個基于底層的應用請求復制(所有基于tcp的packets)開源項目,可用于替代ab做在線模擬壓力測試,可轉發各種在線請求到測試服務器上,進行較為詳盡的近乎實際的測試,從而避免了新業務、系統上線帶來的潛在問題。 tcpcopy的四大功能:

  tcpcopy是一個基于底層的應用請求復制(所有基于tcp的packets)開源項目,可用于替代ab做在線模擬壓力測試,可轉發各種在線請求到測試服務器上,進行較為詳盡的近乎實際的測試,從而避免了新業務、系統上線帶來的潛在問題。

  tcpcopy的四大功能:

  1)分布式壓力測試,將多個前段請求集中到某個后端進行壓力測試

  2)上線前測試,檢驗新系統可靠性,提前發現潛在問題

  3)對比測試,同樣請求,針對不同或不同版本程序,可以做性能對比等試驗

  4)應用熱備份,對于后端的短連接,請求丟失率非常低(1/10萬)

  tcpcopy具有以下幾個特點:

  1)實時轉發

  2)近乎真實效果

  3)對在線系統影響很小

  4)操作簡單

  5)分布式

  6)意義非凡

  使用tcpcopy非常簡單,下載源碼,編譯,按照說明,幾個步驟很快就能使用。

  關于tcpcopy使用的一些注意事項有:

  1)Linux平臺,內核2.6+

  2)TCPCOPY類似于UDP,所以會丟包,進而丟失請求

  3)本系統不支持域名,只支持ip地址

  4)Local Requests,請設置lo MTU不超過1500,并且在配置文件中不要設置127.0.0.1地址,

  要設置內網或者外網地址

  5)TCPCOPY server有可能會成為性能瓶頸

  6)丟失請求率跟網絡狀況有關,最好在內網內復制請求

  7)TCPCOPY中的tcpcopy和interception程序運行需要root權限

  8)TCPCOPY只與ip、tcp層的數據有關,如果請求驗證與tcp層以上的協議有關,則系統不能正常運行。

  例如:mysql連接協議,由于權限認證與tcp層上面的mysql協議有關,所以復制過去的請求會被目

  標測試服務器認為非法請求,這個時候需要針對mysql協議作具體針對性的處理,tcpcopy程序才能正常運行

  9)程序更新非???,所以最新版本在svn上面

  svn checkout http://tcpcopy.googlecode.com/svn/trunk/ tcpcopy

  10)目前追求的是功能,性能優化和代碼重構會在穩定以后進行

  11)長response目前支持不是很好,將在下一個版本改進

  12)如果有問題,請注意error.log文件提示的錯誤信息 (email: 163.beijing@gmail.com)

  13)源代碼已經轉到github

  除了這些,下面是我在用tcpcopy測試mysql時的一些小結:

  1) 測試MySQL時,測試機需要開啟 skip-grant-tables,否則無法正常進行,因為MySQL需要進行認證;在線服務器無需調整

  2) 測試過程中不能執行flush privileges,否則上述選項會失效

  3) 每次啟用tcpcopy時,都需要重啟mysqld,不能在線直接應用,否則不能轉發包(最新版本已經解決這個問題)

  4) 用sysbench進行測試過程中,prepare時,在線服務器能創建測試表,測試機無法創建新表

  5) 需適當調大內核參數:ip_queue_maxlen,否則會出現大量的queue dropped

  6) 無法完全保證在線服務器和測試機的數據一致性,只能做為模擬線上壓力,提前進行bug測試等用途

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97