net.ipv4.udp_mem = xxxnet.ipv4.udp_rmem_min = xxxnet.ipv4.udp_wmem_min = xxx3. 调整应用设计:- UDP本身就是无连接不可靠的协议,适用于报文偶尔丢失也不影响程序状态的场景,比如视频、音频、游戏、监控等 。对报文可靠性要求比较高的应用不要使用 UDP,推荐直接使用 TCP 。当然,也可以在应用层做重试、去重保证可靠性
- 如果发现服务器丢包,首先通过监控查看系统负载是否过高,先想办法把负载降低再看丢包问题是否消失
- 如果系统负载过高,UDP丢包是没有有效解决方案的 。如果是应用异常导致CPU、memory、IO 过高,请及时定位异常应用并修复;如果是资源不够,监控应该能及时发现并快速扩容
- 对于系统大量接收或者发送UDP报文的,可以通过调节系统和程序的 socket buffer size 来降低丢包的概率
- 应用程序在处理UDP报文时,要采用异步方式,在两次接收报文之间不要有太多的处理逻辑
查看:
1. 抓包分析是否存在丢包情况;
2. 查看统计:
netstat -s|grep "packet receive errors"解决方案:调整socket缓冲区大小:
socket配置(所有协议socket):# Default Socket Receive Buffernet.core.rmem_default = 31457280# Maximum Socket Receive Buffernet.core.rmem_max = 67108864具体大小调整原理:缓冲区大小没有任何设置值是最佳的,因为最佳大小随具体情况而不同
缓冲区估算原理:在数据通信中,带宽时延乘积(英语:bandwidth-delay product;或称带宽延时乘积、带宽延时积等)指的是一个数据链路的能力(每秒比特)与来回通信延迟(单位秒)的乘积 。[1][2]其结果是以比特(或字节)为单位的一个数据总量,等同在任何特定时间该网络线路上的最大数据量——已发送但尚未确认的数据 。
BDP = 带宽 * RTT
可以通过计算当面节点带宽和统计平均时延来估算BDP,即缓冲区的大小,可以参考下面常见场景估计:

文章插图
应用设置tcp连接数大小丢包
查看:
请参考上面TCP连接队列分析;
解决方案:
设置合理的连接队列大小,当第三次握手时,当server接收到ACK 报之后, 会进入一个新的叫 accept 的队列,该队列的长度为 min(backlog, somaxconn),默认情况下,somaxconn 的值为 128,表示最多有 129 的 ESTAB 的连接等待 accept(),而 backlog 的值则应该是由 int listen(int sockfd, int backlog) 中的第二个参数指定,listen 里面的 backlog 可以有我们的应用程序去定义的;
应用发送太快导致丢包
查看统计:
netstat -s|grep "send buffer errors解决方案:- ICMP/UDP没有流控机制,需要应用设计合理发送方式和速度,照顾到底层buff大小和CPU负载以及网络带宽质量;
- 设置合理的sock缓冲区大小:
setsockopt(s,SOL_SOCKET,SO_SNDBUF,i(const char*)&nSendBuf,sizeof(int));- 调整系统socket缓冲区大小:
# Default Socket Send Buffernet.core.wmem_default = 31457280# Maximum Socket Send Buffernet.core.wmem_max = 33554432附:简单总结一下内核协议栈丢包:
文章插图
相关工具介绍1.dropwatch工具
原理: 监听 kfree_skb(把网络报文丢弃时会调用该函数)函数或者事件吗,然后打印对应调用堆栈;想要详细了解 linux 系统在执行哪个函数时丢包的话,可以使用 dropwatch 工具,它监听系统丢包信息,并打印出丢包发生的函数:

文章插图
2. tcpdump工具
原理: tcpdump 是一个Unix下一个功能强大的网络抓包工具,它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包

文章插图
抓包命令参考:
https://www.tcpdump.org/manpages/tcpdump.1.html
数据包分析:
1.用wireshark工具分析 参考:Wireshark数据包分析实战.pdf
2.可以转化生成CSV数据,用Excel或者shell去分析特定场景报文;
3.可以在linux上用tshark命令行工具进行分析:
推荐阅读
- 红茶之回味,功夫红茶能泡多久
- Redmi|挑战中端性能之王!Redmi Note 11T官宣:5月见
- Redmi|天玑9000性价之王!Redmi K50 Pro首次降价:2949元起
- 中兴|呕心沥血之作!中兴Axon 40 Ultra来了:史上最完美全面屏
- 三大功夫红茶之首,演示泡红茶
- 8830米!为什么要在地球之巅建气象站?
- 青海旅游指南之旅
- 教师|同样是当老师,师范生与非师范生之间有何区别?主要存在3点不同
- 渗透实战之内网渗透流程
- 网络安全之内核提权漏洞深入分析
