原文地址:http://blog.sina.com.cn/s/blog_5374d6e30101lex3.html

有一个同事找我,他怀疑服务器的http连接过多,造成一些请求丢失,从而丢失了日志,但不知道怎么看,让帮忙确认一下。

下面是可能丢数据包的点:

1、交换机

上连和下连端口的流量跑满或链路有问题,有些数据包会被交换机丢掉,抓对应端口的丢包计数值就可以获得这方面的数据。当然,不会每次都丢建立连接的syn数据包,另外,客户端也重传数据包,所以这一块不一定会导致请求数据的丢失,但可以作为参考。

2、负载均衡设备

这个跟上面的交换机类似,但除了有出错的数据包方面的数据,还有出错的连接方面的数据。抓取方法呢,完全设备相关,不在这里说了。

3、操作系统处理不过来,丢弃数据

这里有两部分,一是网卡见操作系统处理不过来,丢数据包,可以读取下面的文件:

/proc/net/dev

每个网络接口一行统计数据,4列是接收出错的数据包数量,5列是接收不过来丢弃的数量。

第二部分是传统非NAPI接口实现的网卡驱动,每个cpu有一个队列,当在队列中缓存的数据包数量超过netdev_max_backlog(sysctl -w net.core.netdev_max_backlog可以修改)限制时,网卡驱动程序会丢掉数据包,这个见下面的文件:

/proc/net/softnet_stat

每个cpu有一行统计数据,第二列是对应cpu丢弃的数据包数量。

4、应用程序处理不过来,操作系统丢弃

内核中记录了两个计数器:ListenOverflows,ListenDrops

ListenOverflows:对应socket的listen queue已满的情况下,需要新增一个连接时的情况,一般是应用程序处理不过来的情况;

ListenDrops:包含上面的情况,也就是说当出现ListenOverflows时,它也会增加1;除此之外,当内存不够无法为新的连接分配socket相关的数据结构时,也会增加1,当然还有别的异常情况下会增加1。

对应的数据在下面的文件中:

/proc/net/netstat

21列是ListenOverflows值,22列是ListenDrops值。

用下面命令,可以直接显示这两个数:

cat /proc/net/netstat | awk '/TcpExt/ { print $21,$22 }'

如果是netstat命令,则看“times the listen queue of a socket overflowed”, “SYNs to LISTEN sockets ignored”对应行前面的数字。如果没有对应的行,则表明对应的数值为0。如果是0,netstat则不会输出对应的行。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

原文地址:http://blog.chinaunix.net/uid-18963137-id-3427213.html

三次握手相关的几个数据

MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0

查看网络的连接状态常用的文件是/proc/net/snmp及/proc/net/netstat文件,当你打开这两个文件时,你会出现格式比较乱,因为它里面包含的数据比较多,我们一般用以下两个命令来查看相应的网络状态,其命令为:netstat -s和nstat -az

这两个文件中包含的信息较多,这里只简单的写出了几个与三次握手相关的几个参数,并简单地分析了它的含义:

TcpAttemptFails:(连接尝试失败数)

1. 试图和一个不存在的套接口建立连接时,连接失败,而TcpAttemptFails同时会加1

2. 被动连接(SYN_SEND)等待第三次握手的ack应答信号超时或者为其它的错误应答时,连接将会失败,且同时TcpAttemptFails的值将加1。

MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0

TcpExtListenDrops(监听队列连接丢弃数) 和TcpListenOverflows(监听队列连接溢出数):

1. 首先是查看现有的连接数是否大于设置的backlog,如果大于就丢弃,并相应的参数值加1。其中backlog是由程序和系统参数net.core.somaxconn共同设置,当backlog的值大于系统设置的net.core.somaxconn时则取net.core.somaxconn的值,否则取程序设置的backlog值。这种出错的方式也被记录在TcpListenOverflows中(其只记录了连接个数不足而产生溢出错误的次数!)。

2. 接收到连接的应答信号时,但它的源地址和目标不同,或者为空时,这个连接将被丢弃。而TcpListenDrops 值也会加1。

3. 当连接没有问题时,系统将会分配必要的资源,而此时没有足够的资源时则会错,此时的连接也会被丢弃,同时TcpListenDrops 值也会加1。

4. 最后在新建绑定端口的时候如果出现资源的不足时TcpListenDrops 值也会加1。

SyncookiesFailed:

当net.ipv4.tcp_syncookies = 1开启时, SyncookiesFailed是通过tcp_v4_hnd_req调用子函数cookie_v4_check做一系列的合法性校验,主要工作是在半连接队列中看是否存在当前的socket连接,如果不存在则说明这个是错误的应答,其值加1。

如何判断是否丢掉用户请求(转载)相关推荐

  1. 如何判断是否丢掉用户请求

    原文地址:http://blog.sina.com.cn/s/blog_5374d6e30101lex3.html 有一个同事找我,他怀疑服务器的http连接过多,造成一些请求丢失,从而丢失了日志,但 ...

  2. gateway请求拦截_一种网关对用户请求进行统一拦截判断是否放行的方法与流程...

    本发明涉及互联网技术领域,特别涉及一种网关对用户请求进行统一拦截判断是否放行的方法. 背景技术: 随着互联网发展的越来越快,技术也更新的非常频繁,比如开发一个系统的架构由最初始的单个服务器就能处理演变 ...

  3. java判断当前浏览器类型_[Java教程]判断用户请求时使用的浏览器类型

    [Java教程]判断用户请求时使用的浏览器类型 0 2016-09-01 15:00:04 在进行微信公众账号开发的时候,其中很大一块是微站点的开发,我们需要知道当前的浏览器是微信内置的浏览器,那么如 ...

  4. 【2012百度之星/资格赛】H:用户请求中的品牌 [后缀数组]

    时间限制: 1000ms 内存限制: 65536kB 描述 馅饼同学是一个在百度工作,做用户请求(query)分析的同学,他在用户请求中经常会遇到一些很奇葩的词汇.在比方说"johnsonj ...

  5. 解决跨站脚本注入,跨站伪造用户请求,sql注入等http安全漏洞

    本篇文章总结于各大博客 版权声明:本文为博主原创文章,欢迎大家转载.如有错误请多多指教. https://blog.csdn.net/u011794238/article/details/464199 ...

  6. java如何模拟请求_单元测试如何模拟用户请求

    python web自动化测试设计构工具书 40.9元 包邮 (需用券) 去购买 > 错误 正当我高高兴兴写完后台c层的测试代码准备提交时,测试机器人报了很多401错误,把代码拉下来一看,原来当 ...

  7. 每秒处理1000万用户请求…云上架构如何实现高性能和高可用

    关注我们获得更多精彩内容! 内容来源:2017 年 12 月 21 日,驻云科技资深架构师翟永东在"云时代企业架构的搭建"进行<云上架构如何实现高性能和高可用>演讲分享 ...

  8. 用户请求接口信息日志记录

    用户请求接口信息日志记录 这样可以详细了解到用户的操作记录更加快捷方便的统计以及排错 思路 1,定义一个注解 2,日志AOP切面类,把自定义的注解作为切点,当系统执行某一个添加了自定义注解的方法时,A ...

  9. 05 ORA系列:ORA-01013 报错用户请求取消当前的操作

    如果希望对常见的Oracle异常ORA报错解决方案有系统的了解,请看<ORACLE系列异常总结ORA>. java.sql.SQLTimeoutException: ORA-01013: ...

最新文章

  1. 解放双手!接私活必备的Java开源项目
  2. SAP 电商云 Spartacus UI 点了 Shipping Method 之后的执行逻辑
  3. android json 解析图片路径,Android 使用Gson解析Asset 目录下的.json文件
  4. Java 8 Friday:让我们弃用那些旧版库
  5. 多布局怎么搭建_怎么制作网页?网页制作基本步骤
  6. 信息学奥赛一本通 1140:验证子串 | OpenJudge NOI 1.7 18
  7. NYOJ--C语言---Fibonacci数递归迭代两种解法
  8. Non-parseable POM C:\Users\admin\.m2\repository\org\springframework问题解决方案
  9. bootstrap-wysiwyg中JS控件富文本中的图片由本地上传到服务器(阿里云、七牛、自己的数据库)...
  10. 荣耀V8鸿蒙系统刷机包,华为荣耀V8原版rom系统刷机包_荣耀V8最新版升级包更新下载...
  11. 阿里云 OSS 客户端直传 Policy 模式使用
  12. 台式计算机开机后黑屏,电脑开机显示黑屏有关的问题与解决方法
  13. amr文件服务器,如何打开amr文件?amr音频格式用什么打开?
  14. postfix邮箱服务器安装和配置
  15. 用html制作一个影厅位置图,screenx影厅是什么
  16. SwiftUI学习笔记之@State, @Binding
  17. 单用户MIMO系统(二):信道信息在发端未知
  18. 11091 最优自然数分解问题
  19. Android屏幕上涂鸦画笔标记的实现
  20. 杰理AC6965E开发资料共享

热门文章

  1. vue 引入的方法 用在template_?【有手就行】轻松打造属于自己的Vue工程化脚手架工具...
  2. python中tensor与variable_NLP实战篇之tf2中tensor、variable、gradient、ops
  3. Docker初学2:Docker的安装
  4. c语言中手机系统,一种手机课堂C语言编程系统的制作方法
  5. linux mysql远程链接_Linux下mysql实现远程连接
  6. 基于协同过滤算法实现选课推荐系统
  7. 微信小程序获取多选框选中值和选中值对应的id
  8. POJ-1860-Currency Exchange
  9. C/C++利用三元组实现稀疏矩阵运算
  10. (转)如何修改maven的默认jdk版本