android socket 丢包,socket timeout exception和常见网络丢包情况
8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
今天参加了一场内部的网络方面的分享
这是现场记下和整理的笔记
socket timeout exception出现一般有两种情况
一、超时时间过短慢查询、负载高等
二、网络连接丢包TCP重试机制:20ms重传,指数递增。
数据库传输路径
网卡–>驱动–>硬件缓存–》内核
网卡
网卡在内存中分配一个缓冲区:sk_buffer 如果无法及时写到sk_buffer ,会产生丢包 ()
写入SK_BUFFER后,网卡立即发起一个CPU硬件中断
驱动
CPU接受到后,触发网卡驱动的软中断程序,消费SK_BUFFER上的数据,交给内核协议处理
硬件缓存
默认将sk_buffer队列数据写入到CPU队列,如果满了也会丢弃
内核
数据我进到IP层后
因为窗口可调整不会丢包,但TCP握手还是会丢包
client发送sync
SERVER在收到后 SYNC_QUEUE半连接队列,然后返回syn+ack
client 收到后 发送ack
server 收到后写入accept_queue 全连接队列
server收到client的syn后,把相关信息放到半连接队列中
server回复syn+ack给client
server收到client的ack,如果这时全连接队列没满,那么从连接队列拿出相关信息放入到全连接队列中,否则按tcp_abort_on_overflow指示的执行。
当这两个连接满时会发生丢包,试如下参数
/proc/sys/net/ipv4/tcp_abort_on_overflow 为0表示当队列满时丢弃
/proc/sys/net/ipv4/tcp_abort_on_overflow 为1表示当队列满时发送RST报文
应用进程过程中常见的可能导致超时的情况:
1.JVM Full GC
2.上游服务较慢
3.慢SQL
4.使用了慢Redis命令
5.系统CPU使用率较高(可能是外部进程使用较高,可能是Java进程中存在死锁或死循环)
6.磁盘IO wait导致
7.打开的文件数过多
监控NIC缓冲区到driver buffer缓冲区过程中,如果NIC缓冲区消费能力小于NIC写入能力,则会发生网络丢包
命令行可以通过ifconfig 查看overruns对应的值
或者cat /proc/net/dev里面fifo列对应的值
命令行可以通过ifconfig 查看dropped对应的值
或者cat /proc/net/dev里面dropped列对应的值
当出现这两种值时,需要使用top 检查cpu core0的idle比例,如果cpu idle较低, 可能需要更换配置更好的机器。
全连接队列丢包会引起连接超时
可以通过netstat –s | egrep “listen|LISTEN”来查看,如果全连接队列丢包,需要业务检查是否是有突发的大量建立连接的请求。
全连接队列大小: min(backlog, somaxconn) ,backlog socket指定的,somaxconn为系统设置的
半连接队列大小: max(64, /proc/sys/net/ipv4/tcp_max_syn_backlog)
例如:使用了短链接
使用连接池,连接池minTotal较小并且maxTotal非常大
android socket 丢包,socket timeout exception和常见网络丢包情况相关推荐
- 几种常见网络抓包方式介绍
几种常见网络抓包方式介绍 一.网络分流器(TAP) 二.有网管功能的小交换机 三.用两块网卡的Linux方案 四.总结 无论作为网络运维人员,还是安全渗透工程师,在工作中都会无可避免地碰到网络抓包的需 ...
- 实时检测服务器延迟和丢包率脚本,使用mtr测试网络丢包率和平均延时的脚本实例...
mtr(a network diagnostic tool)是一个神奇的指令,能按要求对路由中所有节点进行批量测试.简单敲一个"mtr qq.com"将会有意外收获! 当需要进行产 ...
- 基于linux的netfilter处理数据包的过程分析,基于Netfilter的网络数据包分析
前面的几篇文章我已经对Netfilter的大概的机制作了比较详细的介绍,这篇文章我就说一下如何分析网络数据包.我刚刚写了一个程序,程序的功能很简单,就是提取出网络数据包的源地址和改包所使用的网络协议, ...
- 计算机网络抓包参考文献,计算机网络课程设计二(网络抓包与分析)
<计算机网络课程设计二(网络抓包与分析)>由会员分享,可在线阅读,更多相关<计算机网络课程设计二(网络抓包与分析)(9页珍藏版)>请在人人文库网上搜索. 1.课程设计课程名称: ...
- linux网络包截获,用C实现截获网络数据包
现在进入第二步,捕获数据包.从第20行开始,我们进入了一个死循环,while(1),在第24行,recvfrom(sock, buffer, sizeof buffer, 0, (struct soc ...
- linux接收网络数据并存存储,linux网络数据包数据结构 Socket Buffer
Linux网络核心数据结构是套接字缓存(socket buffer),简称skb.它代表一个要发送或处理的报文,并贯穿于整个协议栈.1.套接字缓存skb由两部分组成:(1)报文数据:它保存了实际在网络 ...
- 云网络丢包故障定位全景指南
作者简介:冯荣,腾讯云网络高级工程师,腾讯云网络核心开发人员. 万字长文 建议收藏 引言 本期分享一个比较常见的⽹络问题--丢包.例如我们去ping⼀个⽹站,如果能ping通,且⽹站返回信息全⾯,则 ...
- 深度好文:云网络丢包故障定位,看这一篇就够了~
深度好文:云网络丢包故障定位,看这一篇就够了~ https://mp.weixin.qq.com/s/-Q1AkxUr9xzGKwUMV-FQhQ Alex 高效运维 今天 来源:本文经授权转自公众号 ...
- 网络编程之网络丢包故障如何定位?如何解决?
引言 本期分享一个比较常见的网络问题--丢包.例如我们去ping一个网站,如果能ping通,且网站返回信息全面,则说明与网站服务器的通信是畅通的,如果ping不通,或者网站返回的信息不全等,则很可能是 ...
- Android设备上使用WiFinspect抓取网络通讯包
之前的文章我们介绍过使用Fiddler来抓取Android设备通信HTPP, 今天我们需要更加细节网络抓包. 首先, 您的Andriod设备需要root权限, 去Google Play安装一个叫Wi ...
最新文章
- asp.net性能常用优化
- hashMap死循环
- Ubuntu系统的安装与使用:[3]搜狗输入法安装
- 测试双打:模拟,假人和存根
- 带头结点头部插入创建链表
- c盘清理代码_拒接卡顿,从c盘减负、系统修复及网络加速做起!奥利~~~
- python基本数据类型第三周_python3第二天(基本数据类型)
- Python绘制具有描边效果和内部填充的柱状图
- 封装一个操作文件的函数
- Python:线程、进程与协程(5)——multiprocessing模块(2)
- webstorm破解码
- mysql连接工具_连接MySQL常用工具
- [转]企业安全建设二——如何推动安全策略
- 关于Elasticsearch的精确值查找(term)不生效问题
- 雪花算法-java实现
- 未来计算机的畅享300,新学期畅享作文300字(通用5篇)
- python如何打开npy文件_python实现npy格式文件转换为txt文件操作
- MySQL联合索引之索引失效与否
- 词霸天下---208 词根【-freeze- = -frig- = -friger- 冷,冰冻 】
- signature=689995ceebd2e64b214c3148d7b8e47a,WDR34基因突变致窒息性胸廓发育不良1例报道并文献复习...
热门文章
- 雷达原理第五版微盘pdf下载_雷达原理电子书(雷达原理PDF格式电子书)
- 短视频拍摄流程-----今抖云创
- PhotoShop导入webp格式图片
- 软件测试常见面试题分享
- 【Nightingale (夜莺)监控系统安装配置】
- 在页面引入项目路径 ${webRoot}
- JavaScript中的onmouseover事件和onmouseout事件实例
- srt格式导入pr乱码_字幕文件显示乱码怎么办 网易导出的srt导入pr乱码
- 字节跳动《Vim 中文手册》火了,完整版 PDF 开放下载!
- jquery html5关系图,html5 canvas复杂人物关系图设置代码