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 小时前
以Hadoop为例,解读分布式计算设计
后端·架构
枫叶V1 小时前
Scrapling 入门:一个现代 Python 网页采集框架
后端·爬虫
Rust研习社1 小时前
告别环境混乱!使用 mise 管理你的开发环境
前端·后端·rust
alwaysrun1 小时前
C++之高性能跨平台日志库spdlog
c++·后端·编程语言
Gopher_HBo1 小时前
Go语言加密算法
后端
青云计划1 小时前
数据库的守护者-单飞锁
后端
神奇小汤圆1 小时前
每次重启能救下几十万个请求:Cloudflare 如何用 Rust 实现零停机升级
后端
用户298698530141 小时前
Java 统计 Word 文档中的单词数量
java·后端
fliter2 小时前
为什么我要杀掉 syn:Rust 编译速度之战与 unsynn 的诞生
后端