TCP 三次握手,给我长脸了噢
大家好,我是小富~ 前言 之前有个小伙伴在技术交流群里咨询过一个问题,我当时还给提供了点排查思路,是个典型的八股文转实战分析的案例,我觉得挺有意思,趁着中午休息简单整理出来和大家分享下,有不严谨的地方欢迎大家指出。 问题分析 我们先来看看他的问题,下边是他在群里对这个问题的描述,我大致的总结了一下。 他们有很多的 IOT 设备与服务端建立连接,当增加设备并发请求变多,TCP连接数在接近1024个时,可用TCP连接数会降到200左右并且无法建立新连接,而且分析应用服务的GC和内存情况均未发现异常。 从他的描述中我提取了几个关键值,1024、200、无法建立新连接。 看到这几个数值,直觉告诉我大概率是TCP请求溢出了,我给的建议是先直接调大全连接队列和半连接队列的阀值试一下效果。 那为什么我会给出这个建议? 半连接队列和全连接队列又是个啥玩意? 弄明白这些回顾下TCP的三次握手流程,一切就迎刃而解了~ 回顾TCP TCP三次握手,熟悉吧,面试八股里经常全文背诵的题目。 话不多说先上一张图,看明白TCP连接的整个过程。 第一步:客户端发起SYN_SEND连接请求,服务端收到客户端发起的SYN...


