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 长连接异常。

相关推荐
掘金码甲哥8 分钟前
这块终端神器, 必须吹爆!
后端
Csvn1 小时前
📊 SQL 入门 Day 8:集合操作 — 用 SQL 做数学里的"并交差"
后端·sql
码事漫谈4 小时前
告别数据孤岛与AI“水土不服”:金仓多模融合时序库如何让数据真正服务于业务
后端
IT_陈寒4 小时前
Redis的持久化配置把我坑惨了:你以为数据安全了?
前端·人工智能·后端
星栈4 小时前
Node 接口该写同步还是异步?
后端·node.js
红烧大青虫4 小时前
HarmonyOS应用开发实战:小事记 - UIAbility 的冷启动/热启动/后台启动三种场景与 launchParam 解析
后端·华为·harmonyos·鸿蒙系统
码事漫谈4 小时前
AI Token 缓存:命中省 10 倍,不命中白扔钱
后端
65岁退休Coder4 小时前
LangChain v1.3.4 笔记 - 04 Agent 中间件
后端
神奇小汤圆5 小时前
一个接口多个实现,Spring 怎么"适配多场景"?
后端
花开彼岸天~5 小时前
鸿蒙原生开发手记:徒步迹 - 自定义组件开发规范
后端·华为·harmonyos·鸿蒙系统