我们使用Linux作为服务器操作系统时,为了达到高并发处理能力,充分利用机器性能,经常会进行一些内核参数的调整优化,但不合理的调整常常也会引起意想不到的其他问题,本文就一次Linux服务器丢包故障的处理过程,结合Linux内核参数说明和TCP/IP协议栈相关的理论,介绍一些常见的丢包故障定位方法和解决思路. 问题现象 本次故障的反馈现象是:从办公网访问公网服务器不稳定,服务器某些端口访问经常超时,但Ping测试显示客户端与服务器的链路始终是稳定低延迟的. 通过在服务器端抓包,发现还有几个特点:…
Linux服务器丢包故障的解决思路及引申的TCP/IP协议栈理论 转载至:https://www.sdnlab.com/17530.html 我们使用Linux作为服务器操作系统时,为了达到高并发处理能力,充分利用机器性能,经常会进行一些内核参数的调整优化,但不合理的调整常常也会引起意想不到的其他问题,本文就一次Linux服务器丢包故障的处理过程,结合Linux内核参数说明和TCP/IP协议栈相关的理论,介绍一些常见的丢包故障定位方法和解决思路. 问题现象 本次故障的反馈现象是:从办公网访问公网…
Linux 网卡丢包严重 生产中有一台linux设备并发比较大,droped包比较多,尤其是在跑游戏数据包的时候,存在严重的丢包现象,怀疑网卡性能不足,在更换设备前想能不有通过软件方法解决,通过网上一些资料显示,出现这种现象,也有可能是网卡buffer size 太小的原因,遂尝试更改buffer 大小解决,下面的设备运行了64天,丢包超过20多亿   找了一些国外的文章,可以通过ethtool来修改网卡的buffer size ,首先要网卡支持,我的服务器是是INTEL 的1000M网卡,我们…
转自:https://blog.csdn.net/chengxuyuanyonghu/article/details/73739516 生产中有一台Linux设备并发比较大,droped包比较多,尤其是在跑游戏数据包的时候,存在严重的丢包现象,怀疑网卡性能不足,在更换设备前想能不有通过软件方法解决,通过网上一些资料显示,出现这种现象,也有可能是网卡buffer size 太小的原因,遂尝试更改buffer 大小解决,下面的设备运行了64天,丢包超过20多亿 . ethtool命令用于获取以太网卡…
http://view.inews.qq.com/a/20161025A0766200窄带时代的QQQQ是窄带时代极具代表性的产品,在那个网络传输效率比较低的年代,大家还记得Google的首页吗?Google的那个简洁页面,为什么如此简洁?Google诞生于1998年,也是身处窄带时代,你会发现它的首页字节大小是小于1024的,为什么要小于1024字节,因为以太网的MTU(也就是最大传输单元)是1024,Google为了让用户在一个网络包中传输完成,所以它把页面大小降到了1024以下.这是一种极…
1.IP协议首部 TCP报文段的首部  UDP分组结构   ip数据报 tcp数据报 UDP校验 w 报文长度该字段指定UDP报头和数据总共占用的长度.可能的最小长度是8字节,因为UDP报头已经占用了8字节.由于这个字段的存在,UDP报文总长不可能超过65535字节(包括8字节的报头,和65527字节的数据).实际上通过IPv4协议传输时,由于IPv4的头部信息要占用20字节,因此数据长度不可能超过65507字节(65,535 − 8字节UDP报头 − 20字节IP头部).在IPv6的jumbo…
实战: 丢包tc qdisc add dev bond0 root netem loss 10% 延迟tc qdisc add dev bond0 root netem latency 100ms 丢包+延迟tc qdisc add dev bond0 root netem latency 100ms loss 10% 清除配置tc qdisc del dev bond0 root 1.设置延时 延时:sudo tc qdisc add dev eth0 root netem delay 30m…
项目开了个P2P服务器,但是运行一段时间就会出现丢包问题,具体表现为:1.udp丢包严重(一分钟收发分别1.5W) 2.ssh(用于运维指令)连接不上该服务器(超时) 3.服务器运行好像没什么异常,udp假连接数比tcp连接数少(正常应该相近) 首先开始怀疑是不是客户端有bug,查log发现某段时间有个别客户端发大量心跳包,开始怀疑这个原因导致服务异常.在多次关服开服后没出现这个问题,但是服务器运行一段时间依旧出现上述异常,排除这个原因. 既然不是客户端导致的.. 就开始在自身找原因,接着怀疑是…
一.问题描述: 一个项目中为了生成树状目录,调用了file.listFiles()方法,然后利用file.isDirectory()方法判断是否为目录,该程序在windows下运行无问题,在Linux下中文文件夹用该方法判断会失败,具体表现为:isFile()---false; isDirectory()---false; 查阅资料,很多网帖说是Linux下无法使用isDirectory()进行判断,但是没有解决方案. 另一方面,程序中显示的文件名为乱码.所以考虑是不是Linux系统的编码问题导…
其关键在于这两个参数 lcp-echo-interval 1   #发送间隔秒 lcp-echo-failure 5    #5次未响应断开 因为OpenWRT默认的设置为1秒发送一次 5次没有响应就断开连接,对于网络状况稍差的同学来说,这个规则很容易造成频繁断线重新拨号,把这两个参数改大即可解决此问题. 下面是修改方法: WINSCP连路由器  协议选SCP 配置文件路径:   vim/etc/ppp/options lcp-echo-interval 60 #发送间隔秒 lcp-echo-f…
http://www.ttlsa.com/zabbix/zabbix-simple-checks/  这个文章看了,还没有实践 1.先创建监控项,键值如下 icmppingloss[<121.131.24.39>,<4>,<1000>,<68>,<500>] icmppingloss[<target>,<packets>,<interval>,<size>,<timeout>] targ…
转自:http://cizixs.com/2018/01/13/linux-udp-packet-drop-debug?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io 最近工作中遇到某个服务器应用程序 UDP 丢包,在排查过程中查阅了很多资料,总结出来这篇文章,供更多人参考. 在开始之前,我们先用一张图解释 linux 系统接收网络报文的过程. 首先网络报文通过物理网线发送到网卡 网络驱动程序会把网络中的报文读出来放到…
这是 RHCA 中的一个 BDP 的测试,这也是公司很常用的一种延时和丢包的模拟,现在分享给大家. 我们做的应用软件,还有测试 TCP/UDP  对比,测试 BDP 对 TCP/IP 的影响时,我们都需要一些网络中的延时和丢包模拟,很多商业的软件可以做这个事,其实完美的 Linux 本身就可以使用 TC 来实现这个功能. TC 中的 Netem 可以模拟时延,丢包,重复包,乱序等功能 建议大家如果测试的话,使用 tc 当中间的路由器,来接二个网卡,然后打开路由功能来测试. tc 的最最基本的使用…
UDP主要丢包原因及具体问题分析 一.主要丢包原因   1.接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失.对于这种情况可以修改接收端,将包接收后存入一个缓冲区,然后迅速返回继续recv.   2.发送的包巨大丢包:虽然send方法会帮你做大包切割成小包发送的事情,但包太大也不行.例如超过50K的一个udp包,不切割直接通过send方法发送也会导致这个包丢失.这种情况需要切割成小包再逐个se…
转自: 自己在做UDP传输时遇到的问题,接收端没设置缓存,结果总是丢包. 看到这篇文章设置了一下接收缓存就好 *;//设置为32K setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int)); http://www.cnweblog.com/fly2700/archive/2011/09/19/317825.html 什么会导致udp丢包呢,我这里列举了如下几点原因: 1.调用recv方法接收端收到数据后,处理数据花…
一.主要丢包原因 1.接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失.对于这种情况可以修改接收端,将包接收后存入一个缓冲区,然后迅速返回继续recv. 2.发送的包巨大丢包:虽然send方法会帮你做大包切割成小包发送的事情,但包太大也不行.例如超过50K的一个udp包,不切割直接通过send方法发送也会导致这个包丢失.这种情况需要切割成小包再逐个send. 3.发送的包较大,超过接受者缓存导…
目录 1. 两种丢包处理策略 2. 前向纠错(FEC) 3. 丢包重传(ARQ) [参考文献] 1. 两种丢包处理策略 为了保证实时性,通常适应UDP协议来针对RTP数据进行传输,而UDP无法保证数据传输的质量,所以在网络环境不好的时候,丢包是经常出现的问题,有什么策略来改善这个问题吗? 常用的方法有: 丢包重传(ARQ)和前向纠错(FEC). 通常抗丢包有两种方式,FEC和ARQ.FEC是前向冗余,举个例子,发送数据A和B,增加发送一个数据C等于A和B的异或.接收方接到这3个包的任意2个包,异…
读书笔记 from here UDP socket缓冲区满造成的UDP丢包 如果socket缓冲区满了,应用程序没来得及处理在缓冲区中的UDP包,那么后续来的UDP包会被内核丢弃,造成丢包.在socket缓冲区满造成丢包的情况下,可以通过增大缓冲区的方法来缓解UDP丢包问题.但是,如果服务已经过载了,简单的增大缓冲区并不能解决问题,反而会造成滚雪球效应,造成请求全部超时,服务不可用. UDP socket缓冲区过小造成的UDP丢包 如果Client发送的UDP报文很大,而socket缓冲区过小无…
转自:https://blog.csdn.net/u011857683/article/details/83758869 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u011857683/article/details/837588691 概述 最近业务上老有问题,查看发现overruns值不断增加,学习了一下相关的知识.发现数值也在不停的增加.发现这些 errors, dropped, overruns 表示的含义还不大一样. [root@…
  1 概述 最近业务上老有问题,查看发现overruns值不断增加,学习了一下相关的知识.发现数值也在不停的增加.发现这些 errors, dropped, overruns 表示的含义还不大一样. [root@localhost ~]# ifconfig eth0 eth0: flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu inet 192.168.1.135 netmask 255.255.255.0 broadcast 192.168.1.255…
Linux 中模拟延时和丢包的实现 使用ifconfig命令查看网卡 Linux 中使用 tc 进行流量管理.具体命令的使用参考 tc 的 man 手册,这里简单记录一下使用 tc 模拟延时和丢包的命令. ping出来的最小单位为1毫秒,在执行压测之前,最好用压力机ping一下服务器,如果延迟很高,就没必要测了,因为请求还没发出去都已经有一段时间的消耗了 1. 延时(1)设置延时:给 eth0 设备发包时添加 30ms 的延时(从网卡).tc qdisc add dev eth0 root ne…
测试系统在Linux上的性能发现丢包率极为严重,发210000条数据,丢包达110000之巨,丢包率超过50%.同等情形下Windows上测试,仅丢几条数据.形势严峻,必须解决.考虑可能是因为协议栈Buffer太低所致,于是先看看默认情况: sysctl -a |grep net.core 发现 net.core.rmem_max = 131071 net.core.rmem_default = 112640 修改吧,变大一点,变成10M,然后reboot(应该重启某个服务即可) 然后查网卡收包…
测试系统在Linux上的性能发现丢包率极为严重,发210000条数据,丢包达110000之巨,丢包率超过50%.同等情形下Windows上测试,仅丢几条数据.形势严峻,必须解决.考虑可能是因为协议栈Buffer太低所致,于是先看看默认情况: sysctl -a |grep net.core 发现 net.core.rmem_max = 131071 (单位:字节) net.core.rmem_default = 112640 (单位:字节) 修改吧,变大一点,变成10M,然后reboot(应该重…
出处[云英公众号]:https://mp.weixin.qq.com/s?__biz=MzI1NzM3NTYxMw==&mid=2247483685&idx=1&sn=95c8bb46388dc0e40b8c48c508b34008&scene=1&srcid=0802bE2wuDrKD9zWy1zlsSJx#rd https://mp.weixin.qq.com/s?src=3&timestamp=1571033580&ver=1&sign…
最近自己公司网站老出现掉包问题之前以为是网络问题或机房问题,经过N久的排查发现是linux网卡掉包了,下面我来分享我的解决办法.   之前公司的系统由于网卡问题,经常出现掉包(掉包排除攻击的 因素)或者突然挂掉, 严重影响服务的正常提供,因此想在出现此问题时自动解决. 思路:对网卡检测掉包情况,或者用ping检测,出现了,就重启哈网卡 .瞧是很简单吧! 代码如下:  代码如下 复制代码 #安装帮助: mkdir  /cyc #/cyc/renetwork.log为日志文件   #!/bin/ba…
先来看看: ficonfig 其中第一网卡是ssh使用: 第二个网卡是在Linux 最小化安装后IP的配置(手动获取静态IP地址)这个文章中配置过ip是192.168.1.2:在Linux重命名网卡名称中修改网卡配置名为:net-static 第三个网卡是没有配置过的 将会对后两个网卡使用activebackup方式进行网卡聚合 然后,使用上一篇的方法配置:Linux 网卡聚合 配置的过程没有错误,但最后的结果确是: 可以看到没有 eno33554984这个网卡: 使用 nmcli connec…
原因 首先说明下eth0与ens33的关系: 目前的主流网卡为使用以太网络协定所开发出来的以太网卡 (Ethernet),因此我们 Linux 就称呼这种网络接口为 ethN (N 为数字). 举例来说,主机上面有一张以太网卡,因此主机的网络接口就是 eth0 (第一张为 0 号开始).新的 CentOS 7 开始对于网卡的编号有另一套规则,网卡的界面代号与网卡的来源有关,网卡名称会是这样分类的: eno1 :代表由主板 BIOS 内置的网卡 ens1 :代表由主板 BIOS 内置的 PCI-E…
之前尝试过很多网上利用Windows编译FFmpeg的文章,都没有办法编译X64位的FFmpeg,有些教程中有专门提到编译64位的FFmpeg需要下载mingw-w64-install,但是编译的过程中总是遇到各种错误.尝试了很久依然没有成功. 然后在网上看见另外一篇教程:VS2015编译FFMPEG.方法很简答,并且成功编译了X64位的FFmpeg.特此记录:转自:http://blog.csdn.net/gongxp123456/article/details/52879976 系统环境:W…
近期在万兆网卡上測试,出现了之前千兆网卡没有出现的一个现象,tasklet版本号的netback下,vm进行发包測试,发现vif的interrupt默认绑定在cpu0上,可是vm发包执行时发现host上面cpu1, cpu2的ksoftirqd非常高. 从之前的理解上来说,包从netfront出来通过eventchannel notify触发vif的irq处理函数,然后tasklet_schedule调用tx_action,通过一系列处理流程把包发给网卡.所以vif的interrupt绑在哪个c…
值班中发现一台服务器报到网关丢包,带宽200M. 用  ethtool bond0 查看网卡带宽信息,发现 Speed 为 3100M ,非 1000 的整数倍或10000的整数倍,感觉不对,因为是做了bond , 查了下具体的网卡信息,发现bond0 是 4绑 1,3个千兆 + 1个百兆, 因此丢包是因为百兆卡跑满导致,将其从bond 里 删除后, 网卡恢复正常,问题解决. 相关截图如下: ethtool bond0 具体网卡信息: 1个疑问:理想情况下  网卡4绑 1 ,mode=0 轮询模…