tencent cloud

云服务器

动态与公告
产品动态
公共镜像更新动态
操作系统官方停止维护计划
产品公告
产品简介
云服务器概述
产品优势
基本概念
地域和可用区
新手指引
Service Regions and Service Providers
产品计费
计费概述
计费方式
计费项
转换计费方式
购买实例
变配费用说明
欠费说明
快速入门
通过自定义配置购买 Linux 云服务器
通过自定义配置购买 Windows 云服务器
用户指南
操作指南总览
使用限制总览
实例
竞价实例
预留实例
镜像
存储
备份与恢复
网络
安全
密码/密钥
监控与告警
运维管理
便捷功能
迁移服务器
在线迁移
迁移咨询
故障处理
无法登录云服务器问题处理思路
Windows 实例登录相关故障
Linux 实例登录相关故障
其他实例登录相关故障
实例运行故障
Linux 实例内存故障
网络故障
实践教程
云服务器选型建议
搭建环境
搭建网站
搭建应用
搭建可视化界面
本地文件上传到云服务器
网络性能测试
其他实践教程
API 文档
History
Introduction
API Category
Making API Requests
Region APIs
Instance APIs
Cloud Hosting Cluster APIs
Image APIs
Instance Launch Template APIs
Placement Group APIs
Key APIs
Security Group APIs
Network APIs
Data Types
Error Codes
安全与合规
访问管理
网络
常见问题
地域和可用区相关
计费相关
实例相关
存储相关
镜像相关
服务器迁移相关
网络相关
安全相关
操作系统相关
运维和监控相关
访问管理相关
NTP 服务相关
应用场景相关
服务协议
CVM Service Level Agreements
Red Hat Enterprise Linux 镜像服务协议
Public IP Service Level Agreement
词汇表
文档云服务器故障处理网络故障云服务器网络访问丢包

云服务器网络访问丢包

PDF
聚焦模式
字号
最后更新时间: 2025-08-25 16:21:15
本文主要介绍可能引起云服务器网络访问丢包问题的主要原因,及对应排查、解决方法。

可能原因

引起云服务器网络访问丢包问题的可能原因如下:

前提条件

在进行问题定位及处理前需登录实例,详情请参见 登录 Linux 实例登录 Windows 实例

故障处理

触发限速导致 TCP 丢包

云服务器实例具备多种规格,且不同规格有不同的网络性能。当实例的带宽或包量超过实例规格对应的标准时,会触发平台侧的限速,导致丢包。排查及处理步骤如下:
1. 查看实例的带宽及包量。 Linux 实例可执行 sar -n DEV 2 命令查看带宽及包量。其中,rxpck/stxpck/s 指标是收发包量,rxkB/stxkB/s 指标是收发带宽。
2. 使用获取的带宽及包量数据对比 实例规格,查看是否达到实例规格性能瓶颈。
是,则需升级实例规格或调整业务量。
否,若未达到实例规格性能瓶颈,则可通过 提交工单 进一步定位处理。

触发限速导致 UDP 丢包

参见 触发限速导致 TCP 丢包 步骤,判断是否由实例规格性能瓶颈引起丢包。
是,则需升级实例规格或调整业务量。
若未达到实例规格性能瓶颈,则可能是由平台对 DNS 请求额外的频率限制引起。在实例整体带宽或包量达到实例规格的性能瓶颈时,可能会触发 DNS 请求限速而出现 UDP 丢包。可通过 提交工单 进一步定位处理。

触发软中断丢包

当操作系统监测到 /proc/net/softnet_stat 的第二列计数值在增长时,则会判断为“软中断丢包”。当您的实例触发了软中断丢包时,可通过以下步骤进行排查及处理: 查看是否开启 RPS:
开启,则内核参数 net.core.netdev_max_backlog 偏小时会引发丢包,需调大。内核参数详细信息请参见 Linux 实例常用内核参数介绍
未开启,则查看是否为 CPU 单核软中断高,导致未能及时收发数据。若是,您可以:
选择开启 RPS,使软中断分配更为均衡。
检查业务程序是否会引发软中断分配不均匀。

UDP 发送缓冲区满

若您的实例因 UDP 缓冲区不足而导致丢包时,可通过以下步骤进行排查处理:
1. 使用 ss -nump 命令查看 UDP 发送缓冲区是否已满。
2. 若是,则调大内核参数 net.core.wmem_maxnet.core.wmem_default,并重启 UDP 程序以生效。内核参数详细信息请参见 Linux 实例常用内核参数介绍
3. 若仍存在丢包问题,则可通过 ss -nump 命令查看发送缓冲区并没有按预期的增大。此时需要检查业务代码是否通过 setsockopt 设置了 SO_SNDBUF。若是,则请修改代码增大 SO_SNDBUF。

UDP 接收缓冲区满

若您的实例因 UDP 缓冲区不足而导致丢包时,可通过以下步骤进行处理:
1. 使用 ss -nump 命令查看 UDP 接收缓冲区是否已满。
2. 若是,则调大内核参数 net.core.rmem_maxnet.core.rmem_default,并重启 UDP 程序以生效。内核参数详细信息请参见 Linux 实例常用内核参数介绍
3. 若仍存在丢包问题,则可通过 ss -nump 命令查看接收缓冲区并没有按预期的增大。此时需要检查业务代码是否通过 setsockopt 设置了 SO_RCVBUF。若是,则请修改代码增大 SO_RCVBUF。

TCP 全连接队列满

TCP 全连接队列的长度取 net.core.somaxconn 及业务进程调用 listen 时传入的 backlog 参数,两者中的较小值。若您的实例发生 TCP 全连接队列满导致丢包时,可通过以下步骤进行处理:
1. 调大内核参数 net.core.somaxconn。内核参数详细信息请参见 Linux 实例常用内核参数介绍
2. 检查业务进程是否传入了 backlog 参数。若是,则相应调大。

TCP 请求溢出

在 TCP 接收数据时,若 socket 被 user 锁住,则会将数据送到 backlog 队列。若此过程若失败,则会引起 TCP 请求溢出导致丢包。通常情况下,假设业务程序性能正常,则可参考以下方式从系统层面排查及处理问题:
检查业务程序是否通过 setsockopt 自行设置了 buffer 大小:
若已设置,且该值不够大,可以修改业务程序指定一个更大的值,或不再通过 setsockopt 指定大小。
说明:
setsockopt 的取值受内核参数 net.core.rmem_maxnet.core.wmem_max 限制。调整业务程序的同时,可以同步调整 net.core.rmem_maxnet.core.wmem_max。调整后请重启业务程序使配置生效。
若未设置,则可以调大 net.ipv4.tcp_memnet.ipv4.tcp_rmemnet.ipv4.tcp_wmem 内核参数来调整 TCP socket 的水位。 内核参数修改请参见 Linux 实例常用内核参数介绍

连接数达到上限

云服务器实例具备多种规格,且不同规格有不同的连接数性能指标。当实例的连接数超过实例规格对应的标准时,会触发平台的限速,导致丢包。处理步骤如下:
说明:
连接数指宿主机上保存的云服务器实例的会话数,包含 TCP、UDP 和 ICMP。该数值大于在云服务器实例上通过 ssnetstat 命令获取的网络连接数。
查看您实例的连接数,并对比 实例规格,查看是否达到实例规格性能瓶颈。
是,则需升级实例规格或调整业务量。
否,若未达到实例规格性能瓶颈,则可通过 提交工单 进一步定位处理。

iptables policy 设置相关规则

在云服务器 iptables 未设置相关规则的情况下,可能是 iptables policy 相关规则设置导致到达云服务器的包都被丢弃。处理步骤如下:
1. 执行以下命令,查看 iptables policy 规则。
iptables -L | grep policy
iptables policy 规则默认为 ACCEPT。若 INPUT 链 policy 非 ACCEPT,则会导致所有到服务器的包都被丢弃。例如,若返回如下结果,表示进入云服务器的包都会被 drop。
Chain INPUT (policy DROP)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
2. 执行如下命令,按需调整 -P 后的值。
iptables -P INPUT ACCEPT
调整后,可再次执行 步骤1 命令查看,应返回如下结果:
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈