# 在 observer 节点之间互 ping,确认基础网络延迟 # 在 10.32.10.249 上 ping 其他节点 for ip in 10.32.10.250 10.32.10.251 10.32.10.252 10.32.10.253 10.32.10.254; do echo "=== ping $ip ===" ping -c 20 -i 0.1 $ip | tail -3 done # 重点关注: # - avg RTT 是否 < 1ms(同机房正常值) # - 是否有丢包 (packet loss) # - mdev(抖动)是否很大 # 查看当前 TCP 重传情况 netstat -s | grep -iE "retrans|timeout|reset" # 间隔 10 秒执行两次,看重传是否在增长 netstat -s | grep "segments retransmited"; sleep 10; netstat -s | grep "segments retransmited" # 如果重传在增长,说明网络链路有丢包 # rpc_packet_net_delay 可能包含大包传输时间 # 检查最新的 observer.log 中 RPC 包大小相关信息 LATEST_LOG=$(ls -t /home/admin/oceanbase/log/observer.log* | head -1) # 搜索大包相关日志 grep -i "payload\|packet_size\|large.*packet\|big.*rpc" "$LATEST_LOG" | tail -20 # 搜索 RPC 超时相关 grep -i "rpc.*timeout\|rpc.*slow\|rpc.*delay" "$LATEST_LOG" | tail -20 # 之前 PALF log_task 延迟 100~300ms,现在是否恢复? LATEST_LOG=$(ls -t /home/admin/oceanbase/log/observer.log* | head -1) grep "log_task life cost too much time" "$LATEST_LOG" | tail -10 # 如果仍有大量告警,说明 PALF 日志推送仍是瓶颈 # 如果告警消失,说明 PALF 已正常,问题在其他 RPC 调用 -- 连接 sys 租户 -- obclient -h127.0.0.1 -P2881 -uroot@sys -p -- 查看 clog 同步延迟 SELECT tenant_id, ls_id, svr_ip, role, begin_time, end_time, TIMESTAMPDIFF(SECOND, begin_time, end_time) AS sync_delay_s FROM oceanbase.GV$OB_LOG_STAT WHERE role = 'FOLLOWER' ORDER BY sync_delay_s DESC LIMIT 20; -- 如果 clog 同步延迟高,说明 PALF 日志推送 RPC 仍慢 # 在两个节点之间抓包,分析 RPC 包的真实网络 RTT # 在 10.32.10.249 上抓发往 10.32.10.251 的包 sudo tcpdump -i eth0 -nn host 10.32.10.251 and port 2882 -w /tmp/rpc_capture.pcap -c 10000 # 抓完后用 tcpdump 分析 sudo tcpdump -r /tmp/rpc_capture.pcap -nn | head -50 # 或者用 wireshark 分析 TCP RTT: # tshark -r /tmp/rpc_capture.pcap -Y "tcp.analysis.ack_rtt" -T fields -e tcp.analysis.ack_rtt | sort -n | tail -20 -- 确认集群的 zone 分布和副本位置 SELECT zone, svr_ip, svr_port, status FROM oceanbase.DBA_OB_SERVERS; -- 查看是否有跨 zone 的副本 SELECT tenant_id, table_id, tablet_id, ls_id, svr_ip, zone, role FROM oceanbase.GV$OB_TABLET_REPLICA GROUP BY tenant_id, ls_id, role ORDER BY tenant_id, ls_id LIMIT 50; -- 如果 leader 和 follower 分布在不同 zone(不同机房), -- rpc_packet_net_delay 高是正常的跨机房延迟 # 快速验证:对比同 zone 和跨 zone 的 ping 延迟 echo "=== 同 zone (zone1: 249→250) ===" ping -c 10 10.32.10.250 echo "=== 跨 zone (zone1→zone2: 249→251) ===" ping -c 10 10.32.10.251 echo "=== 跨 zone (zone1→zone3: 249→253) ===" ping -c 10 10.32.10.253