session-replay-tools / tcpcopy

An online request replication and TCP stream replay tool, ideal for real testing, performance testing, stability testing, stress testing, load testing, smoke testing, and more.
http://session-replay-tools.github.io/tcpcopy/
Other
4.38k stars 1.02k forks source link

mysql 批量插入24KB SQL(抓包MTU > 1500时)时,tcpcopy 重放数据填充异常 0x00000000000000导致重放失败 #393

Closed huntkalio closed 3 weeks ago

huntkalio commented 2 years ago

场景:mysql批量插入24KB左右SQL时,tcpcopy重放失败 原因:抓包查看SQL插入了0x00000000000000... 导致失败 查看日志:出现了more than MTU,可能ip分包时错误导致 tcpcopy编译参数: ./configure --prefix=/opt/tcpcopy --with-pfring=/root/tcpcopy/PF_RING --pcap-capture --pcap-send --set-protocol-module=mysql-replay-module --with-debug

wangbin579 commented 2 years ago

运行tcpcopy的时候,增加 -M 新的MTU值即可

huntkalio commented 2 years ago

机器的MTU都是1500;是tcpcopy在复制大的包的时候时会出错,暂时通过ethtool -K eth0 gro off(关闭gro)解决此bug

wangbin579 commented 2 years ago

抓的最大数据包大小假设为X(超过MTU),如果设置-M的大小等于X,发送如果没有问题,那就可以设置-M成X。