【银河麒麟高级服务器操作系统实例】tcp半链接数溢出分析及处理全过程

了解更多银河麒麟操作系统全新产品,请点击访问

麒麟软件产品专区:https://product.kylinos.cn

开发者专区:https://developer.kylinos.cn

文档中心:https://document.kylinos.cn


服务器环境以及配置

系统环境

物理机/虚拟机/云/容器

虚拟机

网络环境

外网/私有网络/无网络

私有网络

硬件环境

处理器:

Kunpeng-920

内存:

32 GiB

机器型号

OpenStack Foundation

整机类型/架构:

aarch64

BIOS版本:

EFI Development Kit II / OVMF

网卡:

x ring 2048/2048  drv virtio_net v1.0.0 / fw UNKNOWN

软件环境

具体操作系统版本

银河麒麟高级服务器操作系统 

Kylin Linux Advanced Server release V10 (Sword)

内核版本

 4.19.90-25.21.v2101.ky10.aarch64

现象描述

系统发现tcp半链接溢出情况。业务量上来的时候   timewait会逐步升高  最高2.6万  再后面就tcb半链接池溢出  然后应用访问开始缓慢。

现象分析

分析netstat日志

Listen queue overflowed (监听队列溢出): 96,600:全连接队列(已完成连接队列)已满,无法接收更多已完成握手的连接。

SYNs to LISTEN sockets dropped: 96,600: 半连接队列(SYN队列)已满,无法接收更多新的SYN请求,因此新的SYN包被丢弃。

Listen queue overflowed和SYNs to LISTEN sockets dropped两个统计项数值相等,表明每次监听队列溢出时,都会有一个新的SYN包被丢弃。表明服务器在处理新连接方面存在瓶颈,尤其是在应用程序调用accept()函数时的延迟。

accept()函数处理不及时是导致这种现象的主要原因,具体原因包括:

应用程序性能不足:

  • 应用程序在处理已建立连接时执行了阻塞操作,导致无法及时调用accept()。
  • 全连接队列长度由 net.core.somaxconn和listen(fd, backlog) 的backlog两者最小值决定,如果listen函数传参backlog太小会导致这种现象。
  • 使用单线程处理所有连接请求,无法高效处理高并发连接。
  • 应用程序的资源(如线程、进程、文件描述符)有限,无法快速处理新连接。
  1. 高并发连接请求:
  • 短时间内大量合法连接请求涌入,超出应用程序的处理能力。
  • 恶意攻击: 如SYN洪水攻击,导致大量半开连接占满队列。

系统参数配置不足:

  • tcp_max_syn_backlog和 somaxconn设置过低,,无法应对高并发连接请求。

查看内核参数net.core.somaxconn和net.ipv4.tcp_max_syn_backlog的值,都很大,并不会是这两个内核参数太小导致。

net.core.somaxconn = 10240
net.ipv4.tcp_max_syn_backlog = 262144

服务器资源瓶颈:

  • CPU或内存不足: 高并发连接导致CPU或内存资源耗尽,影响连接处理速度。
  • I/O瓶颈: 网络接口或存储设备成为I/O瓶颈,限制了数据的快速处理。

 分析sa日志

sar -rh -f sa27,查看内存使用情况,问题发生期间,还存在空闲内存,且可用内存较多。

sar -B -f sa27,查看内存回收情况,问题发生期间,没有进行内存回收,可见内存资源是够的。

sar -u ALL -f sa27,查看问题发生期间CPU使用情况,CPU资源使用正常,内核态占比很低。

sar -P ALL -f sa27,查看问题发生期间,各个CPU的使用率,每个CPU使用率都很低。

sar -d -f sa27,查看问题发生时,磁盘使用情况,磁盘使用很低。

sar -n DEV -f sa27,查看问题发生期间,网络流量情况,网络流量并不高。

分析结果

Listen queue overflowed和SYNs to LISTEN sockets dropped两个统计项数值相等,都为96,600,说明全连接和半链接都发生了溢出,是全连接溢出导致了这个问题。表明服务器在处理新连接方面存在瓶颈,尤其是在应用程序调用accept()函数时的延迟。

accept()函数处理不及时是导致这种现象的主要原因有应用程序性能不足、高并发连接请求、系统参数配置不足和服务器资源瓶颈。根据sa日志和内核参数分析,系统参数配置配置正常,服务器资源正常。

在高并发压测下出现这种问题,推测是应用程序端问题,建议应用端排查,如全连接队列长度由 net.core.somaxconn和listen(fd, backlog) 的backlog两者最小值决定,如果listen函数传参backlog太小会导致这种现象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/503488.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

visual studio 自动调整代码格式的问题:

1.取消自动调整格式 2.如果是想让代码显得更紧凑,上面的不动,按这个来:

javaEE-网络原理-1初识

目录 一.网络发展史 1.独立模式 2.网络互联 二.局域网LAN 1.基于网线直连: 2.基于集线器组件: 3.基于交换机组件: 4.基于交换机和路由器组件 ​编辑 三、广域网WAN 四、网络通信基础 1.ip地址 2.端口号: 3.协议 4.五…

三维卷积( 3D CNN)

三维卷积( 3D CNN) 1.什么是三维卷积 1.1 三维卷积简介 二维卷积是在单通道的一帧图像上进行滑窗操作,输入是高度H宽度W的二维矩阵。 三维卷积输入多了深度C这个维度,输入是高度H宽度W深度C的三维矩阵。在卷积神经网络中&…

黄仁勋演讲总结(2种显卡,1个开源大模型,1个数据采集平台)

研发算力显卡RTX50系列,PC端显卡GB10,开源大模型Cosmos(用于机器人和自动驾驶), Isaac GR00T(人形机器人的数据采集平台)。 新一代 RTX 50 系列显卡 RTX 50 系列 GPU,相对之前系列&a…

阿尔法linux开发板ping不通百度

我使用的阿尔法linux板子,发现按照《03【正点原子】I.MX6U网络环境TFTP&NFS搭建手册V1.3.2》一套操作下来,还是没办法实现板子上网。 我总结了下面方法,我如何实现联网和互ping通,大致总结下三步 一、pc端的wifi网络&#xf…

使用图像过滤器在 C# 中执行边缘检测、平滑、浮雕等

图像过滤器可让您对图像中的像素执行操作。这是一个相当大的示例,因此您可能需要花一些时间浏览代码。 在一种图像滤镜中,您有一个称为滤镜内核的值数组。对于图像中的每个像素,您将内核置于该像素的中心。然后将内核下的每个像素的值乘以相应的内核值。将它们相加,除以“…

数值分析速成复习笔记

请确保你有10hour的有效学习时间,保你拿90 证明部分 编程部分

如何快速上手一个鸿蒙工程

作为一名鸿蒙程序猿,当你换了一家公司,或者被交接了一个已有的业务。前辈在找你之前十分钟写了一个他都看不懂的交接文档,然后把一个鸿蒙工程交接给你了,说以后就是你负责了。之后几天你的状态大概就是下边这样的,一堆…

asammdf python库解析MF4文件(一)cut and filter

目录 cutfilter asammdf 是一个功能强大的 Python 库,专门用于处理汽车行业常用的 MDF(Measured Data Format)文件 这篇文章主要介绍mdf库的cut和filter函数 cut cut函数主要用于裁剪数据,比如你的MF4文件是一个100s的数据&…

性能测试01|性能测试理论

目录 一、性能测试概述 二、性能测试的分类 1、基准测试 2、负载测试 3、稳定性测试 4、压力测试 5、并发测试 三、性能测试的指标 1、响应时间 2、并发用户数 3、吞吐量 4、点击数 5、错误率 6、资源利用率 四、性能测试流程 1、性能需求分析 2、性能测试计划…

基于SpringBoot的斯诺克球馆预约购票管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

【JavaWeb】2. 通用基础代码

以下内容来源:编程导航。 无论在任何后端项目中,都可以复用的代码。 1、自定义异常 自定义错误码,对错误进行收敛,便于前端统一处理。 💡 这里有 2 个小技巧: 自定义错误码时,建议跟主流的错…

获取IP地区

包 https://packagist.org/packages/geoip2/geoip2#v3.1.0 用composer加载包 composer require geoip2/geoip2 mmdb下载 https://github.com/P3TERX/GeoLite.mmdb?tabreadme-ov-file

企业国外传输大文件到国内该怎么做?

在全球化的商业环境中,企业跨国传输大文件已成为日常运营的重要组成部分。无论是项目合作、数据分析还是文件备份,高效且安全的文件传输对于企业的竞争力和业务连续性至关重要。 企业跨国传输文件的需求重要性 首先,跨国传输大文件能够显著提…

HTML+CSS+JS制作中华传统文化主题网站(内附源码,含5个页面)

一、作品介绍 HTMLCSSJS制作一个中华传统文化主题网站,包含首页、文化艺术页、传统工艺页、文化遗产页、关于我们页等5个静态页面。其中每个页面都包含一个导航栏、一个主要区域和一个底部区域。 二、页面结构 1. 顶部导航区 包含网站 Logo、主导航菜单&#xff…

stm32week3

stm32学习 二.外设 8.TIM输出比较 OC(output compare)输出比较 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0、翻转操作,用于输出一定频率和占空比的PWM波形 每个高级定时器和通用定时器都拥有4个输出比较通道 高级定时器的…

学习threejs,导入assimp assimp2json格式的模型

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.AssimpJSONLoader as…

Webstorm整合Tabnine AI 编码工具

1、打开 WebStorm 设置 Windows/Linux: File -> Settings Mac: WebStorm -> Preferences 2、安装插件 选择 Plugins 点击 Marketplace 搜索 "Tabnine" 点击 Install 重启 WebStorm 如果第一种方式在插件中搜索不到Tabnine的话 则通过第二中方式安装 1、访问Tab…

Tableau数据可视化与仪表盘搭建-数据可视化原理

目录 内容 做个小实验 数据如何变成图表 1 2 维度和度量定义 3 度量映射图形,维度负责区分 1 可映射的数据类型 2 可视化字典 3 使用Tableau将数据变成图表(Tableau可视化原理) 1 2 拖拽 3 具体操作 4 总结 内容 点击左下角的工作表 tableau可以自动…

ansible-api分析(Inventory)

一. 简述: 通过ansible 实现系统初始化功能, 为和平台嵌入, 需要通过ansible的api进行功能实现。 准确来说,ansible并没有纯粹的外部接入api功能, 只是官方提供了原生类,用于继承接入,从而实现a…