数据库同步复制TCP流tcpdump抓包异常与性能问题排查求助
数据库TCP同步复制性能减半问题排查求助
现有架构下,某数据库通过TCP同步复制至远程节点,可稳定达到200-300MB/s的传输速率,但迁移至新硬件后,测试负载下性能减半,最高仅100-150MB/s,无法满足需求。
数据库层面未发现明显异常,监控显示源库持续以数十MB的大chunk发送数据,目标库忙于接收。通过Wireshark分析TCP抓包,发现新架构存在三点异常:
- 每次ACK仅对应1个在途数据包,而现有架构会出现数十个数据包的突发传输。虽已开启
tcp nodelay禁用Nagle算法,但仍怀疑该算法生效; - 数据包发送间隔约为50us,而非收到ACK后数微秒内发送,疑似存在速率控制或突发限制;
- 多数TCP段大小为8kB,现有架构则多为64kB,调整应用设置无效,寻求Linux下强制增大段大小的方法。
注:本次会话window scaling factor为7,接收窗口放大128倍,并非性能瓶颈。
抓包示例
36 2022-09-01 15:02:45.267111 192.168.240.122 192.168.240.115 TCP 8210 45508 → 1600 [PSH, ACK] Seq=2162935757 Ack=3197136358 Win=6166 Len=8156 37 2022-09-01 15:02:45.267115 192.168.240.115 192.168.240.122 TCP 54 1600 → 45508 [ACK] Seq=3197136358 Ack=2162943913 Win=24525 Len=0 38 2022-09-01 15:02:45.267162 192.168.240.122 192.168.240.115 TCP 8210 45508 → 1600 [PSH, ACK] Seq=2162943913 Ack=3197136358 Win=6166 Len=8156 39 2022-09-01 15:02:45.267166 192.168.240.115 192.168.240.122 TCP 54 1600 → 45508 [ACK] Seq=3197136358 Ack=2162952069 Win=24525 Len=0 40 2022-09-01 15:02:45.267212 192.168.240.122 192.168.240.115 TCP 8210 45508 → 1600 [PSH, ACK] Seq=2162952069 Ack=3197136358 Win=6166 Len=8156 41 2022-09-01 15:02:45.267215 192.168.240.115 192.168.240.122 TCP 54 1600 → 45508 [ACK] Seq=3197136358 Ack=2162960225 Win=24525 Len=0 42 2022-09-01 15:02:45.267261 192.168.240.122 192.168.240.115 TCP 8210 45508 → 1600 [PSH, ACK] Seq=2162960225 Ack=3197136358 Win=6166 Len=8156 43 2022-09-01 15:02:45.267265 192.168.240.115 192.168.240.122 TCP 54 1600 → 45508 [ACK] Seq=3197136358 Ack=2162968381 Win=24525 Len=0 44 2022-09-01 15:02:45.267313 192.168.240.122 192.168.240.115 TCP 8210 45508 → 1600 [PSH, ACK] Seq=2162968381 Ack=3197136358 Win=6166 Len=8156 45 2022-09-01 15:02:45.267318 192.168.240.115 192.168.240.122 TCP 54 1600 → 45508 [ACK] Seq=3197136358 Ack=2162976537 Win=24525 Len=0 46 2022-09-01 15:02:45.267342 192.168.240.122 192.168.240.115 TCP 8210 45508 → 1600 [PSH, ACK] Seq=2162976537 Ack=3197136358 Win=6166 Len=8156 47 2022-09-01 15:02:45.267346 192.168.240.115 192.168.240.122 TCP 54 1600 → 45508 [ACK] Seq=3197136358 Ack=2162984693 Win=24525 Len=0 48 2022-09-01 15:02:45.267391 192.168.240.122 192.168.240.115 TCP 8210 45508 → 1600 [PSH, ACK] Seq=2162984693 Ack=3197136358 Win=6166 Len=8156
恳请各位提供排查建议。
内容的提问来源于stack exchange,提问作者Nikolai
相关产品推荐
相关产品推荐

