(来自JDK帮助文档:http://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html)
[本文来自:www.11jj.com]
半连接队列的大小取决于:max(64, /proc/sys/net/ipv4/tcp_max_syn_backlog),不同版本的os会有些差异。
我们写代码的时候从来没有想过这个backlog或者说大多时候就没给他值(那么默认就是50),直接忽视了他,首先这是一个知识点的盲点;其次也许哪天你在哪篇文章中看到了这个参数,当时有点印象,但是过一阵子就忘了,这是知识之间没有建立连接,不是体系化的。但是如果你跟我一样首先经历了这个问题的痛苦,然后在压力和痛苦的驱动自己去找为什么,同时能够把为什么从代码层推理理解到OS层,那么这个知识点你才算是比较好地掌握了,也会成为你的知识体系在TCP或者性能方面成长自我生长的一个有力抓手。
netstat 命令
netstat跟ss命令一样也能看到Send-Q、Recv-Q这些状态信息,不过如果这个连接不是Listen状态的话,Recv-Q就是指收到的数据还在缓存中,还没被进程读取,这个值就是还没被进程读取的 bytes;而 Send 则是发送队列中没有被远程主机确认的 bytes 数。
netstat -tn 看到的 Recv-Q 跟全连接半连接没有关系,这里特意拿出来说一下是因为容易跟 ss -lnt 的 Recv-Q 搞混淆,顺便建立知识体系,巩固相关知识点 。
比如如下netstat -t 看到的Recv-Q有大量数据堆积,那么一般是CPU处理不过来导致的:
上面是通过一些具体的工具、指标来认识全连接队列(工程效率的手段)。
实践验证一下上面的理解
把java中backlog改成10(越小越容易溢出),继续跑压力,这个时候client又开始报异常了,然后在server上通过 ss 命令观察到:
按照前面的理解,这个时候我们能看到3306这个端口上的服务全连接队列最大是10,但是现在有11个在队列中和等待进队列的,肯定有一个连接进不去队列要overflow掉,同时也确实能看到overflow的值在不断地增大。
Tomcat和Nginx中的Accept队列参数
Tomcat默认短连接,backlog(Tomcat里面的术语是Accept count)Ali-tomcat默认是200, Apache Tomcat默认100。
上 班 啦!上 班 啦!!是不是感受.....没有一丝丝预防没有一丝丝挂念好多人如今的表情是不是如许▼明明感受假期还没起头,懒觉还没睡够几天几
每年4.24日是世界实验动物纪念日,为增强学院实验动物治理,保障实验动物福利。按拍照关文件要求,通辽职业学院实验动物伦理审查委员会召开第
大家好,小娟今天来为大家解答如何把word转换成excel以下问题,如何将word文档转换成excel表格很多人还不知道,现在让我们一起来看看吧!1、方法一
大家好,小乐今天来为大家解答荒岛余生60天国语版以下问题,荒岛余生60天第二集国语版很多人还不知道,现在让我们一起来看看吧!1、链接: htt
大家好,小美今天来为大家解答三年级作文美丽的校园300字以下问题,三年级作文美丽的校园300字左右三个自然都很多人还不知道,现在让我们一起
大家好,小乐今天来为大家解答蔓越莓粉功效和作用以下问题,蔓越莓粉的服用方法很多人还不知道,现在让我们一起来看看吧!1、密私爱当中含有
卒业答辩已拿下一只脚已经踏出亲爱的鸭大了对于即将卒业的同窗留校时间不足2个月啦大学时光即将竣事也该物色房子了总得为新的本身预备一个平
大家好,小豪今天来为大家解答usb无线网卡怎么安装以下问题,无线网卡怎么安装使用很多人还不知道,现在让我们一起来看看吧!1、首先,将USB无线
Copyright 2024.依依自媒体,让大家了解更多图文资讯!