配置升级后公网与私网通信异常,根因多为内核参数与新系统/应用不匹配:重点检查net.ipv4.ip_local_port_range、net.core.somaxconn、vm.swappiness等参数是否适配新内核语义及高并发需求,并通过sysctl -a比对升级前后实际生效值,结合ss -i和大包洪泛测试验证私网TCP栈行为。

配置升级后出现公网与私网通信异常,尤其是伴随连接超时、TCP重传激增、集群心跳丢失或RAC节点失联等情况,大概率不是网络物理层问题,而是内核参数与新版本系统或应用(如Oracle 19c RAC、LVS、高并发服务)不匹配所致。这类故障隐蔽性强,日志里往往只显示“connection reset”“no route to host”或“timeout”,真正根因藏在内核行为变化中。
重点排查三类内核参数适配性
升级后最常出问题的不是新增参数,而是原有参数值在新内核下失效、被弃用,或语义发生偏移:
-
net.ipv4.ip_local_port_range:旧配置如
1024 65535在高并发场景下易耗尽临时端口;19c RAC客户端连接密集时,建议收紧为10000 65535并配合net.ipv4.tcp_tw_reuse = 1 - net.core.somaxconn 与 net.core.netdev_max_backlog:若从 Linux 7.9 升级到 8.x/9.x,新内核默认值提升,但若沿用旧脚本硬设为 128 或 512,会直接限制监听队列,导致公网请求大量丢包(SYN received 后无响应)
-
vm.swappiness:RAC 环境严禁 swap 换页,但某些升级后发行版默认设为 60;必须强制设为
1(非 0,避免OOM Killer误杀Oracle进程)
验证私网通信是否受内核栈影响
私网(如RAC的Private IP网段)故障常被误判为交换机或网卡问题。先绕过上层协议,用底层工具验证:
- 在双节点间用
ping -f -s 8972 192.168.10.2(大包+洪泛)测试私网MTU与转发稳定性,若丢包率突增,检查net.ipv4.ip_forward是否被意外关闭,或net.ipv4.conf.all.rp_filter是否启用反向路径过滤(升级后默认可能变为1) - 用
ss -i查看私网连接的retrans和rto值,若重传次数持续>3 或 RTO 超过 1000ms,说明 TCP 栈对私网延迟适应不良,需调大net.ipv4.tcp_rmem和net.ipv4.tcp_wmem的第二、三字段
比对升级前后生效参数差异
不要只看 /etc/sysctl.conf,新内核可能通过 systemd-sysctl、cloud-init 或 initramfs 加载不同配置:
- 执行
sysctl -a | grep -E "(port_range|somaxconn|rp_filter|swappiness)" | sort,导出升级前后的两份结果,用diff对比实际生效值 - 检查
/run/sysctl.d/和/usr/lib/sysctl.d/下是否有覆盖性配置文件(如 50-cloud-init.conf 可能重置了net.ipv4.conf.all.forwarding) - 确认
systemctl status systemd-sysctl是否成功加载,避免因语法错误导致部分参数未生效却无报错
Oracle 19c RAC场景下的专项检查点
若升级后RAC出现 OCR 无法访问、节点驱逐或 ASM 实例挂起,除常规网络外,必须验证:
-
kernel.sem:19c 要求至少250 32000 100 128,低于此值会导致 GI 启动失败或频繁重启;升级后旧值可能被截断(如只保留前两位) -
fs.aio-max-nr:必须 ≥ 1048576,否则 ASM 磁盘组无法挂载;新版内核虽默认更高,但某些云平台镜像会重置该值 -
net.ipv4.tcp_keepalive_time:RAC 私网心跳依赖 keepalive,若设为 7200(2小时),远高于默认 7200 秒,可能导致节点误判离线;建议保持 600(10分钟)以内










