实例风险检测
linux服务器出现了带宽跑不满的情况,后来发现是UDP接收缓冲区满和发送缓冲区满
检查报文数据
先检查报文数据
netstat -s -u #查看报文数据
报文数据

如果出现问题,则情况应该如下:
1、packet receive errors 不为空,并且在一直增长说明系统有 UDP 丢包
2、packets to unknown port received 表示系统接收到的 UDP 报文所在的目标端口没有应用在监听,一般是服务没有启动导致的
3、receive buffer errors 表示因为 UDP 的接收缓存太小导致丢包的数量
2、packets to unknown port received 表示系统接收到的 UDP 报文所在的目标端口没有应用在监听,一般是服务没有启动导致的
3、receive buffer errors 表示因为 UDP 的接收缓存太小导致丢包的数量
修改内核参数
此时修改内核参数的接收值和发送值以及修改pipe大小。直接写入配置
sudo vim /etc/sysctl.conf #编辑配置文件
写入下列内容
kernel.sysrq = 1 net.ipv6.conf.all.disable_ipv6=0 net.ipv6.conf.default.disable_ipv6=0 net.ipv6.conf.lo.disable_ipv6=0 kernel.printk = 5 net.core.wmem_default = 112428800 net.core.rmem_default = 112428800 net.core.wmem_max = 112428800 net.core.rmem_max = 112428800 net.core.netdev_max_backlog= 2000 net.ipv4.tcp_mem = 2325258 4650516 4650516 net.ipv4.tcp_wmem = 16384 4194304 8388608 net.ipv4.tcp_rmem = 87380 6291456 8388608 fs.pipe-max-size=33554432 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_sack = 1 net.ipv4.tcp_window_scaling = 1 kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 17476 kernel.sem = 1000 32000 1000 5120 fs.file-max = 655360 net.ipv4.ip_local_port_range = 2048 65000
让配置生效
/sbin/sysctl -p #配置生效
顺便重置下网络
sudo systemctl restart NetworkManager.service sudo service network-manager restart sudo systemctl restart network-manager
修改套接字默认mem大小
查询TCP套接字默认mem大小
cat /proc/sys/net/ipv4/tcp_mem
修改TCP套接字默认mem大小
echo 2325258 4650516 9301032 > /proc/sys/net/ipv4/tcp_mem
查询UDP套接字默认mem大小
cat /proc/sys/net/ipv4/udp_mem
修改UDP套接字默认mem大小
echo 179574 359148 718296 > /proc/sys/net/ipv4/udp_mem
其他TCP或这UDP协议栈可以修改的相关参数,请参考:
- THE END -
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://nekocat.top/udp/