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

相关推荐
古茗前端团队1 小时前
急招!前端|测试|后端|产品(名额多,速来)
前端·后端·架构
喵个咪2 小时前
Go-Wind HTTP 服务器从入门到精通
后端·http·go
hunterandroid2 小时前
Hilt 依赖注入:从手动 new 到自动装配
后端
喵个咪2 小时前
Go-Wind gRPC 服务器从入门到精通
后端·go·grpc
喵个咪3 小时前
Go-Wind GraphQL 服务器从入门到精通
后端·graphql
青青子衿悠悠我心3 小时前
Docker与Kubernetes的十年战争与融合
后端
AI小老六3 小时前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent
后端·算法·ai编程
云技纵横3 小时前
@Transactional 到底要不要加 rollbackFor?一次数据不一致事故讲清楚
后端·面试
Csvn3 小时前
日志分析进阶 — Logwatch 与 GoAccess 实战
后端