如何优化甲骨文云 ARM 实例的网络延迟和丢包率?

文章导读
优化甲骨文云 ARM 实例的网络表现,首要任务是确认实例规格带宽上限,其次才是调整系统内核参数。
📋 目录
  1. A 命令速用版
  2. B 为什么会这样
  3. C 分步处理
  4. D 怎么验证是否生效
  5. E 常见坑
  6. F 参考来源
A A

优化甲骨文云 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. 优化内核网络参数

执行上述“命令速用版”中的命令。修改完成后,建议重启实例以确保所有网络栈参数完全生效。

如何优化甲骨文云 ARM 实例的网络延迟和丢包率?

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