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

轉載自:http://www.yy520.net/read.php?304

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: [email protected])
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測試等用途

2012-02-15 更新: tcpcopy-mysql-alpha-v0.7.tar.gz 版本經過長期測試,已經正式穩定可靠,可以放心在for MySQL環境下使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章