优化甲骨文云 ARM 实例的网络表现,首要任务是确认实例规格带宽上限,其次才是调整系统内核参数。
先说结论:网络问题通常源于带宽限制或配置不当,先排查实例规格限制,再优化系统栈。
- 先定位:确认实例 OCPU 数量对应的网络带宽上限,避免触及硬件天花板。
- 先做:开启 BBR 拥塞控制算法并调整 TCP 缓冲区,适应高延迟或丢包环境。
- 再验证:使用 mtr 和 iperf3 测试路径质量和实际吞吐量,确认优化效果。
命令速用版
# 查看当前拥塞控制算法
sysctl net.ipv4.tcp_congestion_control
# 开启 BBR 拥塞控制
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
# 调整网络缓冲区大小
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216为什么会这样
甲骨文云 ARM 实例(Ampere A1)的网络带宽能力与分配的 OCPU 数量直接相关,公开资料中没有看到可靠的量化数据表明固定数值,需以控制台显示为准。默认 Linux 内核参数通常保守,针对高带宽高延迟场景未做优化,可能导致丢包或延迟升高。此外,安全列表规则若配置不当,也会拦截部分探测包,造成假性丢包。
分步处理
1. 检查实例规格带宽
登录甲骨文云控制台,进入实例详情页面,查看网络带宽规格。如果带宽已跑满,优化系统参数效果有限,需考虑增加 OCPU 或更换实例类型。
2. 优化内核网络参数
执行上述“命令速用版”中的命令。修改完成后,建议重启实例以确保所有网络栈参数完全生效。
3. 检查安全列表(Security List)
在控制台虚拟网络云(VCN)设置中,检查入站规则。确保 ICMP 协议允许通过,否则 ping 测试会显示丢包,但这不代表业务端口不通。
怎么验证是否生效
1. 延迟与丢包测试
ping -c 100 目标 IP
mtr -rwc 100 目标 IP观察 mtr 输出中每一跳的 Loss% 列,若仅在最后一跳出现丢包,可能是目标主机限制 ICMP,若中间节点丢包则需排查路由。
2. 吞吐量测试
使用 iperf3 连接同一区域内的另一台实例或外部测速服务器,观察带宽是否接近实例规格上限。
常见坑
- ICMP 速率限制:部分云服务商会对 ICMP 包做速率限制,导致 ping 显示丢包但 TCP 业务正常,建议以业务端口连通性为准。
- 带宽上限误解:不要误以为 ARM 实例无限带宽,OCPU 数量少时带宽上限较低,高负载下容易触发限流。
- NAT 网关瓶颈:如果实例通过 NAT 网关访问公网,网关本身的带宽限制可能成为瓶颈,而非实例本身。
参考来源
- Oracle Cloud Infrastructure Documentation, "Compute Instances", https://docs.oracle.com/en-us/iaas/Content/Compute/Concepts/computeoverview.htm
- Oracle Cloud Infrastructure Documentation, "Virtual Cloud Networks", https://docs.oracle.com/en-us/iaas/Content/Network/Concepts/overview.htm