当前位置:网站首页>腾讯云国际云服务器网络访问丢包问题解决办法
腾讯云国际云服务器网络访问丢包问题解决办法
2022-06-24 19:50:00 【87cloud】
本文主要介绍可能引起云服务器网络访问丢包问题的主要原因,及对应排查、解决方法。下面来和87cloud一起了解腾讯云国际云服务器网络访问丢包问题解决办法:
可能原因
引起云服务器网络访问丢包问题的可能原因如下:
- 触发限速导致 TCP 丢包
- 触发限速导致 UDP 丢包
- 触发软中断丢包
- UDP 发送缓冲区满
- UDP 接收缓冲区满
- TCP 全连接队列满
- TCP 请求溢出
- 连接数达到上限
- iptables policy 设置相关规则
前提条件
在进行问题定位及处理前需登录实例,详情请参见 登录 Linux 实例 及 登录 Windows 实例。
故障处理
触发限速导致 TCP 丢包
云服务器实例具备多种规格,且不同规格有不同的网络性能。当实例的带宽或包量超过实例规格对应的标准时,会触发平台侧的限速,导致丢包。排查及处理步骤如下:
- 查看实例的带宽及包量。
Linux 实例可执行sar -n DEV 2
命令查看带宽及包量。其中,rxpck/s
和txpck/s
指标是收发包量,rxkB/s
和txkB/s
指标是收发带宽。 - 使用获取的带宽及包量数据对比 实例规格,查看是否达到实例规格性能瓶颈。
- 是,则需升级实例规格或调整业务量。
- 否,若未达到实例规格性能瓶颈,则可通过 提交工单 进一步定位处理。
触发限速导致 UDP 丢包
参考 触发限速导致 TCP 丢包 步骤,判断是否由实例规格性能瓶颈引起丢包。
- 是,则需升级实例规格或调整业务量。
- 若未达到实例规格性能瓶颈,则可能是由平台对 DNS 请求额外的频率限制引起。在实例整体带宽或包量达到实例规格的性能瓶颈时,可能会触发 DNS 请求限速而出现 UDP 丢包。可通过 提交工单 进一步定位处理。
触发软中断丢包
当操作系统监测到 /proc/net/softnet_stat
的第二列计数值在增长时,则会判断为“软中断丢包”。当您的实例触发了软中断丢包时,可通过以下步骤进行排查及处理:
查看是否开启 RPS:
- 开启,则内核参数
net.core.netdev_max_backlog
偏小时会引发丢包,需调大。内核参数详细信息请参见 Linux 实例常用内核参数介绍。 - 未开启,则查看是否为 CPU 单核软中断高,导致未能及时收发数据。若是,您可以:
- 选择开启 RPS,使软中断分配更为均衡。
- 检查业务程序是否会引发软中断分配不均匀。
UDP 发送缓冲区满
若您的实例因 UDP 缓冲区不足而导致丢包时,可通过以下步骤进行排查处理:
- 使用
ss -nump
命令查看 UDP 发送缓冲区是否已满。 - 若是,则调大内核参数
net.core.wmem_max
和net.core.wmem_default
,并重启 UDP 程序以生效。内核参数详细信息请参见 Linux 实例常用内核参数介绍。 - 若仍存在丢包问题,则可通过
ss -nump
命令查看发送缓冲区并没有按预期的增大。此时需要检查业务代码是否通过 setsockopt 设置了 SO_SNDBUF。若是,则请修改代码增大 SO_SNDBUF。
UDP 接收缓冲区满
若您的实例因 UDP 缓冲区不足而导致丢包时,可通过以下步骤进行处理:
- 使用
ss -nump
命令查看 UDP 接收缓冲区是否已满。 - 若是,则调大内核参数
net.core.rmem_max
和net.core.rmem_default
,并重启 UDP 程序以生效。内核参数详细信息请参见 Linux 实例常用内核参数介绍。 - 若仍存在丢包问题,则可通过
ss -nump
命令查看接收缓冲区并没有按预期的增大。此时需要检查业务代码是否通过 setsockopt 设置了 SO_RCVBUF。若是,则请修改代码增大 SO_RCVBUF。
TCP 全连接队列满
TCP 全连接队列的长度取 net.core.somaxconn
及业务进程调用 listen 时传入的 backlog 参数,两者中的较小值。若您的实例发生 TCP 全连接队列满导致丢包时,可通过以下步骤进行处理:
- 调大内核参数
net.core.somaxconn
。内核参数详细信息请参见 Linux 实例常用内核参数介绍。 - 检查业务进程是否传入了 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 policy 设置相关规则
在云服务器 iptables 未设置相关规则的情况下,可能是 iptables policy 相关规则设置导致到达云服务器的包都被丢弃。处理步骤如下:
- 执行以下命令,查看 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)
- 执行如下命令,按需调整
-P
后的值。iptables -P INPUT ACCEPT
调整后,可再次执行 步骤1 命令查看,应返回如下结果:
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
边栏推荐
- 从数字化过渡到智能制造
- WordPress add photo album function [advanced custom fields Pro custom fields plug-in series tutorial]
- 水库大坝安全监测
- Is it so difficult to calculate the REM size of the web page according to the design draft?
- ServerSocket and socket connection
- Domain Driven Design and coding
- Wx applet jump page
- Android SQLite database
- @mysql
- Fast pace? high pressure? VR panoramic Inn brings you a comfortable life
猜你喜欢
Use of JMeter easynmon
Registration method of native method in JNI
im即时通讯开发应用保活之进程防杀
@mysql
How can I persuade leaders to use DDD to construct the liver project?
∞ symbol line animation canvasjs special effect
Hibernate learning 2 - lazy loading (delayed loading), dynamic SQL parameters, caching
JPA learning 2 - core annotation, annotation addition, deletion, modification and query, list query result return type, one to many, many to one, many to many
In the past 5 years, from "Diandian" to the current test development, my success is worth learning from.
5-minute NLP: summary of 3 pre training libraries for rapid realization of NER
随机推荐
Svg+js keyboard control path
Dry and wet contacts
Why do more and more physical stores use VR panorama? What are the advantages?
Current situation and development prospect forecast report of global and Chinese tetrahydrofurfuryl alcohol acetate industry from 2022 to 2028
Is it so difficult to calculate the REM size of the web page according to the design draft?
Paint rounded rectangle
The new employee of the Department after 00 is really a champion. He has worked for less than two years. The starting salary of 18K is close to me when he changes to our company
How to delete the entire row with duplicate items in a column of WPS table
[issue 25] face to face experience of golang Engineer in the rightmost social recruitment
Power application of 5g DTU wireless communication module
Signal integrity (SI) power integrity (PI) learning notes (XXV) differential pair and differential impedance (V)
Related operations of ansible and Playbook
无需显示屏的VNC Viewer远程连接树莓派
Use of JMeter easynmon
在滴滴和字节跳动干了 5年软件测试,太真实…
C# Winform 最大化遮挡任务栏和全屏显示问题
Encryption and encoding resolution
[leaderboard] Carla leaderboard leaderboard leaderboard operation and participation in hands-on teaching
软件测试与游戏测试文章合集录
时间统一系统