Interconnect网络真瓶颈在于延迟不均和小包堆积而非带宽饱和;需结合netstat丢包、iftop流量分布、GV$EVENT_HISTOGRAM分桶、ethtool链路速率及交换机flow control等多维度验证。
怎么判断 Interconnect 网络是不是真瓶颈
别一看到 gc cr block receive time 高就急着升级网卡。真实瓶颈往往藏在「延迟不均」和「小包堆积」里,而不是带宽跑满。oracle 的 gv$cluster_interconnects 只告诉你用了哪张网卡,不反映实际负载;gv$sysstat 里 gc cr blocks received 和 gc current blocks received 增速快,但没上下文也白搭。
实操建议:
- 用
netstat -s | grep -i "retransmit\|error\|drop"看内核层丢包/重传——比 Oracle 统计更早暴露问题 - 运行
iftop -P tcp -f "port 6200 or port 6201"(假设你用的是默认 GCS/GES 端口)抓实时 Interconnect 流量分布,确认是不是某两个节点之间流量压倒性偏高 - 查
GV$EVENT_HISTOGRAM中gc cr block busy和gc current block busy的 1ms/4ms/16ms 分桶,如果 16ms 桶占比突增,大概率是网络抖动或中断延迟,不是带宽不够
用 ifconfig / ethtool 看懂真实带宽利用率
ifconfig 显示的 bytes 是 L2 层字节数,含以太网头、CRC,而 Oracle GC 流量是 TCP 载荷,两者差约 40–60 字节/包。直接拿 ifconfig 的 RX/TX 除以理论带宽算“利用率”,容易误判 15%–20%。
实操建议:
- 用
ethtool <code>eth2确认协商速率是10000baseT/Full还是降级成1000baseT/Full——物理链路降速比软件配置错误更常见 - 对比
cat /proc/net/dev的rx_bytes和rx_packets,算平均包长:若长期 _gc_read_mostly_locking 更有效 - 检查
ethtool -S <code>eth2输出里的rx_discards、tx_aborted_errors,非零值基本可定位到网卡驱动或交换机 QoS 限速
GC 流量和业务 SQL 的耦合关系怎么验证
Interconnect 压力从来不是孤立存在的。一个 UPDATE /*+ PARALLEL(8) */ 在 RAC 上可能触发 8×N 次 gc current block 请求(N=数据块数),但同样的语句在单实例只走 buffer cache。监控时如果只盯网络,会漏掉真正推手。
实操建议:
- 开
ALTER SYSTEM SET EVENTS '10046 trace name context forever, level 8';在压力时段抓几个 GC 密集会话,看 trace 文件里WAIT #<code>1: nam='gc current block 2-way' 后紧跟的 SQL —— 往往是未绑定变量的循环 INSERT 或低效 JOIN - 查
GV$SQL中buffer_gets/executions高但disk_reads/executions低的语句,这类 SQL 内存访问频繁,极易放大 GC 开销 - 禁用
PARALLEL DML后观察gc cr blocks received是否下降 40%+,能快速验证是否并行度设计失当
为什么改了 MTU 或关闭 checksum 却没改善
Jumbo Frame 不是银弹。Linux 内核默认 tcp_segmentation_offload(TSO)和 generic_receive_offload(GRO)开启状态下,ethtool -K <code>eth2 tso off gro off 才能让抓包看到真实 IP 包大小。否则你调了 MTU=9000,Wireshark 里还是看到 1500 字节的 TCP segment,误以为没生效。
实操建议:
- 确认所有节点执行:
echo 'net.ipv4.tcp_timestamps = 0' >> /etc/sysctl.conf && sysctl -p—— 时间戳字段增加 12 字节/包,在高频小包场景下不可忽视 - 交换机侧必须同步关闭
flow control(pause frames),否则 Oracle 进程可能被无预警阻塞,表现为gc cr block lost等待突增 -
_gc_policy_time默认 10 秒,意味着跨节点数据块迁移决策有延迟;若业务对一致性要求极高(如金融账务),设为 2–3 秒可减少等待,但会小幅增加心跳流量
Interconnect 监控最难的不是拿到数字,而是把 gc cr block busy 的毫秒波动、ethtool -S 的丢包计数、SQL 的执行计划三者串成一条因果链——中间任何一环靠猜,优化就变成碰运气。










