【Linux】backlog是什么?
在TCP建立连接阶段,内核维护着两个队列:
- 未完成队列: 正处于三次握手当中,客户端发送SYN过来,服务端回应SYN+ACK之后,服务端当前处于SYN_RECV状态,此时的连接在未完成队列中。
- 以完成队列: 已完成三次握手,客户端回应ACK之后,两边都处于ESTABLISHED状态,此时连接从未完成队列移到以完成队列中。此时服务端调用accept,就从以完成队列移除并返回新创建的sockfd。
backlog就是以完成连接队列的大小
问题:如果backlog为1,那么完成队列很容易就满,满了以后新客户端连接进来会怎么处理?
下面实际操作一下:
1.先将 backlog 大小设置为1
2.运行客户端和服务端
通过运行程序发现:
- 完全建立连接【即 established】的有两个
- 因此已完成连接队列大小并不是 backlog,而是 backlog + 1
- 如果此时再次来了一个新的连接,状态是 SYN_RECV,SYN_RECV是指服务端接收到了客户端的SYN并且发送了ACK时的状态。再进一步接收到客户端的ACK就进入ESTABLISHED状态。
- 客户端调用
connect
接口还是成功返回 - 但是对于服务端,这个连接进不了完成队列,一段时间后被内核释放了,服务器就没有办法通过
accept
返回得到连接。
【Linux】backlog是什么?相关推荐
- linux backlog详解
本文转自:http://veithen.io/2014/01/01/how-tcp-backlog-works-in-linux.html When an application puts a soc ...
- linux backlog,linux – 如何检查rx ring,max_backlog和max_syn_backlog大小
经常在故障排除和调整过程中,我发现自己在考虑以下Linux内核设置: net.core.netdev_max_backlog net.ipv4.tcp_max_syn_backlog net.core ...
- linux backlog,捋一捋 backlog 的作用
我们知道在 socket 编程中,服务端需要经历 listen → bind → accept 这么几个过程:而客户端需要经历 connect → receive 的过程.其中服务端在 bind 的时 ...
- linux backlog,linux下backlog设置 - 就爱阅读网
当业务有高并发的情况的时候,需要调整backlog.对于PHP而言,需要注意以下3方面:1.操作系统 sysctl 2.web端 nginx 3.php后端 php-fpm 操作系统以Ubuntu为例 ...
- aix内核是linux,linux和aix内核参数检查
安装oracle软件时需要设置操作系统级别的用户限制,后期检查可以使用如下命令,方便问题的排查工作 linux: tail -15 /etc/security/limits.conf tail -30 ...
- Linux中listen()系统调用的backlog参数分析
这篇文章是对上一篇博客网络编程常用接口的内核实现----sys_listen()的补充,上篇文章中我说listen()系统调用的backlog参数既是连接队列的长度,也指定了半连接队列的长度(不能说等 ...
- linux tcp socket 请求队列大小参数 backlog 简介
底层 backlog参数主要用于底层方法int listen(int sockfd, int backlog), 在解释backlog参数之前,我们先了解下tcp在内核的请求过程,其实就是tcp的三次 ...
- linux socket 中的backlog参数介绍
问题 我们在linux上服务器起了一个serversocket,并且设置了backlog为2,并没有让serversock.accept() 在客户端上,我们一个一个的启动了连接socket, 当连接 ...
- 【翻译】TCP backlog在Linux中的工作原理
原文How TCP backlog works in Linux 水平有限,难免有错,欢迎指出! 以下为翻译: 当应用程序通过系统调用listen将一个套接字(socket)置为LISTEN状态时,需 ...
- Linux中,Tomcat 怎么承载高并发(深入Tcp参数 backlog)
一.前言 这两天看tomcat,查阅 tomcat 怎么承载高并发时,看到了backlog参数.我们知道,服务器端一般使用mq来减轻高并发下的洪峰冲击,将暂时不能处理的请求放入队列,后续再慢慢处理.其 ...
最新文章
- 20172307 结对编程项目-四则运算 第二周 阶段总结
- 已解决:pod资源清单yaml中各字段详解
- USACO3.32Shopping Offers(DP)
- java i 线程不安全_java中的++i是线程安全的吗?
- python如何开启多线程_Python如何创建多线程
- 前端学习(2448):发布文章功能介绍
- 阿里毕玄:推荐给Java程序员的7本好书
- 理解 python 装饰器
- 豆瓣 音乐和读书的搜索页的 window.__DATA__ 的解密
- MySQL彻底卸载干净
- CMS漏洞(发货100CMS、SHECMS、ZHCMS、MACCMS)详解实战
- python爬取新浪微博大V的所有微博内容
- 服务器装win10稳定吗,win10哪个版本最稳定好用 目前win10最稳定的版本推荐
- Angular NgModule
- 火箭军计算机网络技术就业方向,计算机系统结构专业就业方向
- 用天然气做燃料极空气做氧化极的燃料电池
- 第7期——AP上线过程
- UE4 天气系统插件使用
- 软件开源真正意义何在?
- C语言三位数反序且if,2012年10月14日江苏省高校计算机等级考试二级C语言上机题(C02)及其解答_张柏雄...