本文主要介绍可能引起云服务器网络访问丢包问题的主要原因,及对应排查、解决方法。下面来和87cloud一起了解腾讯云国际云服务器网络访问丢包问题解决办法:
可能原因
引起云服务器网络访问丢包问题的可能原因如下:
- 触发限速导致 TCP 丢包
- 触发限速导致 UDP 丢包
- 触发软中断丢包
- UDP 发送缓冲区满
- UDP 接收缓冲区满
- TCP 全连接队列满
- TCP 请求溢出
- 连接数达到上限
- iptables policy 设置相关规则
前提条件
在进行问题定位及处理前需登录实例,详情请参见 登录 Linux 实例 及 登录 Windows 实例。
故障处理
云服务器实例具备多种规格,且不同规格有不同的网络性能。当实例的带宽或包量超过实例规格对应的标准时,会触发平台侧的限速,导致丢包。排查及处理步骤如下:
- 是,则需升级实例规格或调整业务量。
- 否,若未达到实例规格性能瓶颈,则可通过 提交工单 进一步定位处理。
参考 触发限速导致 TCP 丢包 步骤,判断是否由实例规格性能瓶颈引起丢包。
- 是,则需升级实例规格或调整业务量。
- 若未达到实例规格性能瓶颈,则可能是由平台对 DNS 请求额外的频率限制引起。在实例整体带宽或包量达到实例规格的性能瓶颈时,可能会触发 DNS 请求限速而出现 UDP 丢包。可通过 提交工单 进一步定位处理。
当操作系统监测到 /proc/net/softnet_stat
的第二列计数值在增长时,则会判断为“软中断丢包”。当您的实例触发了软中断丢包时,可通过以下步骤进行排查及处理:
查看是否开启 RPS:
- 开启,则内核参数
net.core.netdev_max_backlog
偏小时会引发丢包,需调大。内核参数详细信息请参见 Linux 实例常用内核参数介绍。 - 未开启,则查看是否为 CPU 单核软中断高,导致未能及时收发数据。若是,您可以:
- 选择开启 RPS,使软中断分配更为均衡。
- 检查业务程序是否会引发软中断分配不均匀。
若您的实例因 UDP 缓冲区不足而导致丢包时,可通过以下步骤进行排查处理:
若您的实例因 UDP 缓冲区不足而导致丢包时,可通过以下步骤进行处理:
TCP 全连接队列的长度取 net.core.somaxconn
及业务进程调用 listen 时传入的 backlog 参数,两者中的较小值。若您的实例发生 TCP 全连接队列满导致丢包时,可通过以下步骤进行处理:
在 TCP 接收数据时,若 socket 被 user 锁住,则会将数据送到 backlog 队列。若此过程若失败,则会引起 TCP 请求溢出导致丢包。通常情况下,假设业务程序性能正常,则可参考以下方式从系统层面排查及处理问题:
检查业务程序是否通过 setsockopt 自行设置了 buffer 大小:
- 若已设置,且该值不够大,可以修改业务程序指定一个更大的值,或不再通过 setsockopt 指定大小。
说明
setsockopt 的取值受内核参数
net.core.rmem_max
和net.core.wmem_max
限制。调整业务程序的同时,可以同步调整net.core.rmem_max
和net.core.wmem_max
。调整后请重启业务程序使配置生效。 - 若未设置,则可以调大
net.ipv4.tcp_mem
、net.ipv4.tcp_rmem
和net.ipv4.tcp_wmem
内核参数来调整 TCP socket 的水位。
内核参数修改请参见 Linux 实例常用内核参数介绍。
云服务器实例具备多种规格,且不同规格有不同的连接数性能指标。当实例的连接数超过实例规格对应的标准时,会触发平台的限速,导致丢包。处理步骤如下:
说明
连接数指宿主机上保存的云服务器实例的会话数,包含 TCP、UDP 和 ICMP。该数值大于在云服务器实例上通过
ss
或netstat
命令获取的网络连接数。
查看您实例的连接数,并对比 实例规格,查看是否达到实例规格性能瓶颈。
- 是,则需升级实例规格或调整业务量。
- 否,若未达到实例规格性能瓶颈,则可通过 提交工单 进一步定位处理。
在云服务器 iptables 未设置相关规则的情况下,可能是 iptables policy 相关规则设置导致到达云服务器的包都被丢弃。处理步骤如下:
iptables policy 规则默认为 ACCEPT。若 INPUT 链 policy 非 ACCEPT,则会导致所有到服务器的包都被丢弃。例如,若返回如下结果,表示进入云服务器的包都会被 drop。
Chain INPUT (policy DROP) Chain FORWARD (policy ACCEPT) Chain OUTPUT (policy ACCEPT)
调整后,可再次执行 步骤1 命令查看,应返回如下结果:
Chain INPUT (policy ACCEPT) Chain FORWARD (policy ACCEPT) Chain OUTPUT (policy ACCEPT)
原文链接:https://blog.csdn.net/jiuhebaobao/article/details/125427626?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165918469516780357286033%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165918469516780357286033&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-1-125427626-null-null.nonecase&utm_term=%E9%A6%99%E6%B8%AFcdn
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/2162