日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

【原创】MySQL Replay线上流量压测工具

發(fā)布時(shí)間:2023/12/10 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【原创】MySQL Replay线上流量压测工具 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一. 背景

去年做過(guò)一次mysql trace 重放的測(cè)試,由于performance schema本身采集樣本的長(zhǎng)度等限制,實(shí)際回放的成功率比較低。

?

最近找到一款開源的工具,基于TCPCopy實(shí)現(xiàn)了線上流量的仿真測(cè)試,這款開源工具是網(wǎng)易的王斌開發(fā),后面很多公司的模擬在線測(cè)試都是基于TCPCopy實(shí)現(xiàn)。

https://github.com/session-replay-tools/mysql-replay-module

?

1.實(shí)現(xiàn)原理

?

?

生產(chǎn)服務(wù)器上部署TCPCopy, 包捕獲是在數(shù)據(jù)鏈路層增加一個(gè)旁路處理,使用socket在網(wǎng)絡(luò)層抓取線上的數(shù)據(jù)包,進(jìn)行加工處理,使用socket發(fā)送數(shù)據(jù)包到測(cè)試服務(wù)器。

intercept將響應(yīng)信息傳送給tcpcopy。通過(guò)抓取響應(yīng)包,intercept提取響應(yīng)頭信息,并使用一個(gè)特殊的通道將響應(yīng)頭信息發(fā)送給tcpcopy。

當(dāng)tcpcopy接受到響應(yīng)頭信息,它利用頭信息修改在線打包器的屬性并繼續(xù)發(fā)送另一個(gè)包。應(yīng)當(dāng)注意,來(lái)自測(cè)試服務(wù)器的響應(yīng)被路由到充當(dāng)黑洞的輔助服務(wù)器。

?

2.使用場(chǎng)景

復(fù)制線上的真實(shí)流量進(jìn)行壓力測(cè)試,可用于新版MySQL5.7或MySQL8.0壓測(cè),MySQL ?Bug排查定位,容量規(guī)劃等

3.回放模式

基于tcpcopy的MySQL Replay工具有兩種回放模式,支持在線抓包回放及離線回放。考慮到對(duì)生產(chǎn)服務(wù)器的影響盡量小,重點(diǎn)測(cè)試了離線回放模式。

?

二. 部署

1.環(huán)境準(zhǔn)備

要部署離線回放,需要準(zhǔn)備下面資源,以測(cè)試環(huán)境的IP為例:

?

生產(chǎn)服務(wù)器:192.168.137.110

模擬生產(chǎn)服務(wù)器:192.168.137.100

測(cè)試目標(biāo)服務(wù)器:192.168.137.102

輔助服務(wù)器:192.168.137.101

偽裝客戶端IP:192.168.166.166

?

2.模擬生產(chǎn)服務(wù)器安裝離線tcpcopy模塊

git clone git://github.com/session-replay-tools/tcpcopy.git

cd tcpcopy

git clone git://github.com/session-replay-tools/mysql-sgt-replay-module.git

./configure --offline --set-protocol-module=mysql-sgt-replay-module

make

make install

?

3.輔助服務(wù)器安裝離線intercept模塊

git clone git://github.com/session-replay-tools/intercept.git

cd intercept

./configure

make

make install

如有報(bào)錯(cuò),可能需要安裝下面的包

yum install libpcap-devel

三. 生產(chǎn)抓取網(wǎng)絡(luò)包并離線回放

1.生產(chǎn)服務(wù)器利用tcpdump抓取網(wǎng)絡(luò)包

tcpdump -i eth1 -s 0 -C 300 tcp and port 3306 -w /data/offline.pcap

2.測(cè)試目標(biāo)服務(wù)器添加靜態(tài)路由

1.測(cè)試目標(biāo)服務(wù)器還原對(duì)應(yīng)生產(chǎn)服務(wù)器的DB

2.測(cè)試目標(biāo)服務(wù)器以skip-grant-tables模式啟動(dòng)

/usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql --skip-grant-tables&

3.添加靜態(tài)路由

route add -host 192.168.166.166 gw 192.168.137.101

注意:host是偽裝的客戶端IP,gw是輔助服務(wù)器的IP

?

3.輔助服務(wù)器運(yùn)行intercept

/usr/local/intercept/sbin/intercept -i eth2 -F 'tcp and src port 3306' -d

?

?

4.模擬生產(chǎn)服務(wù)器離線回放

1.將生產(chǎn)服務(wù)器上抓取的網(wǎng)絡(luò)包文件拷貝到模擬生產(chǎn)服務(wù)器/tmp/offline.pcap

2.運(yùn)行tcpcopy解析離線網(wǎng)絡(luò)包,轉(zhuǎn)發(fā)網(wǎng)絡(luò)包到測(cè)試目標(biāo)服務(wù)器

/usr/local/tcpcopy/sbin/tcpcopy -i /tmp/offline.pcap -x 3306-192.168.137.102:3306 -s 192.168.137.101 -c 192.168.166.166 -n 1

運(yùn)行 tcpcopy 客戶端,有幾種可選方式:

#全流量復(fù)制

/usr/local/tcpcopy/sbin/tcpcopy -i /tmp/offline.pcap -x 3306-192.168.137.102:3306 -s 192.168.137.101 -c 192.168.166.166 –d

#復(fù)制20%流量

/usr/local/tcpcopy/sbin/tcpcopy -i /tmp/offline.pcap -x 3306-192.168.137.102:3306 -s 192.168.137.101 -c 192.168.166.166 –r 20 -d

#放大2倍流量

/usr/local/tcpcopy/sbin/tcpcopy -i /tmp/offline.pcap -x 3306-192.168.137.102:3306 -s 192.168.137.101 -c 192.168.166.166 –n 2 -d

5 . 監(jiān)控回放情況

通過(guò)開啟performance_schema.events_statements_history_long功能,可以看到回放的情況

update performance_schema.setup_consumers set ENABLED='YES' where NAME='events_statements_history_long';

select * from performance_schema.events_statements_history_long limit 10\G

?

四.碰到的問(wèn)題

1.生產(chǎn)環(huán)境抓包時(shí),對(duì)于短連接,可以抓到mysql的登錄信息,能正常回放,對(duì)于長(zhǎng)連接來(lái)說(shuō),由于缺少第一次認(rèn)證登錄校驗(yàn)信息,不能正常回放,可以等待隨著新連接的建立,完整的session越來(lái)越多,流量會(huì)逐步增多。

2.通過(guò)重啟線上業(yè)務(wù),kill長(zhǎng)連接,讓連接重新建立起來(lái),這種一般不推薦。

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/wangdong/p/9228123.html

總結(jié)

以上是生活随笔為你收集整理的【原创】MySQL Replay线上流量压测工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。