linux ssh链接断断续续排查

🔴 VMware 虚拟网卡(VMXNET3)导致的 TCP 长连接异常

环境:Ubuntu + Jenkins + gitlab

表现:

复制代码
ping 正常
SSH 偶发断开
XShell 10053
Jenkins 页面显示异常/不完整

本质:

markdown 复制代码
VMXNET3 的 TSO/GSO/GRO
    ↓
Ubuntu 内核 TCP 分段/聚合异常
    ↓
长连接被 reset
    ↓
SSH / Jenkins websocket 断开

修复步骤(简化版)

1. 关闭 VMXNET3 offload(最关键)

执行:

vbnet 复制代码
ethtool -K ens160 tso off gso off gro off

验证:

复制代码
ethtool -k ens160

确认:

text 复制代码
tcp-segmentation-offload: off
generic-segmentation-offload: off
generic-receive-offload: off

2. SSH 配置优化

编辑:

bash 复制代码
vim /etc/ssh/sshd_config

追加:

yaml 复制代码
UseDNS no
TCPKeepAlive yes
ClientAliveInterval 60
ClientAliveCountMax 3
GSSAPIAuthentication no

重启:

复制代码
systemctl restart ssh

3. 关闭 GUI(服务器建议)

arduino 复制代码
systemctl stop lightdm

如果不需要桌面:

bash 复制代码
systemctl disable lightdm

4. 永久关闭 offload(防止重启失效)

创建:

bash 复制代码
vim /etc/systemd/system/disable-offload.service

内容:

ini 复制代码
[Unit]
Description=Disable VMXNET3 offload
After=network.target

[Service]
Type=oneshot
ExecStart=/sbin/ethtool -K ens160 tso off gso off gro off

[Install]
WantedBy=multi-user.target

执行:

bash 复制代码
systemctl daemon-reload
systemctl enable disable-offload
systemctl start disable-offload

5. (可选,终极稳定方案)

VMware 虚拟机:

复制代码
VMXNET3 → E1000E

路径:

python 复制代码
VM Settings
 → Network Adapter
 → Adapter Type
 → E1000E

最终效果

一般会解决:

问题 结果
XShell 10053 ✅
SSH 偶发断开 ✅
Jenkins 页面不完整 ✅
websocket reset ✅
长连接 timeout ✅

这个问题的最终定性

不是:

❌ Jenkins_HOME ❌ auditd ❌ sshd崩溃 ❌ Linux资源不足

而是:

🔥 VMware VMXNET3 TCP offload 导致 SSH/Jenkins 长连接异常。

相关推荐
phil65 小时前
沙箱核心功能系列 06:编排调度与资源管理
后端
小兔子5 小时前
if (system(cmd) != 0) 判不出命令失败:它返回的是等待状态,不是退出码
后端
艾迪的技术之路5 小时前
16k 条慢查询,128 张分表,我这么解决
后端·github
dpharness5 小时前
我踩过的四个记忆坑,从预算到换机
前端·后端
加宝的起点雷达5 小时前
三个定时任务被删那天,系统一声不吭
人工智能·后端
泡海椒5 小时前
jquick-pdf 热力图(HEATMAP)实战:24 格营收矩阵嵌入评级报告的模板逐行拆解
后端
对象存储与RustFS5 小时前
Velero 接 RustFS 实操:K8s 集群备份落到自建对象存储
后端·docker·云原生
leo在掘金5 小时前
2.8万亿MoE跑昇腾:0 Day适配改了啥
后端·架构
小兔子5 小时前
proxy_pass 末尾写不写路径,是两套规则:上线后接口路径莫名多了一段
后端
IT枫斗者枫哥5 小时前
用了BigDecimal还差一分?用四组Java代码查清原因
java·后端