【银河麒麟高级服务器操作系统实例】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.mzph.cn/diannao/66410.shtml

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

相关文章

[文献精汇]使用PyCaret预测 Apple 股价

2024年专题 量化专题 共计 102 篇 涵盖量化框架、数据篇、风险与收益、策略篇、多因子模型、编程篇、图形篇、机器学习、Backtrader等主题,全方面了解量化领域知识。机器学习共计29篇 涵盖机器学习基本介绍、监督学习、集成算法、无监督学习以及机器学习实战。研报…

新一代智能工控系统网络安全合规解决方案

01.新一代智能工控系统概述 新一代智能工控系统是工业自动化的核心,它通过集成人工智能、工业大模型、物联网、5G等技术,实现生产过程的智能化管理和控制。这些系统具备实时监控、自动化优化、灵活调整等特点,能够提升生产效率、保证产品质量…

02.02、返回倒数第 k 个节点

02.02、[简单] 返回倒数第 k 个节点 1、题目描述 实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。 2、题解思路 本题的关键在于使用双指针法,通过两个指针(fast 和 slow),让 fast 指针比 slow 指针…

【简博士统计学习方法】第1章:1. 统计学习的定义与分类

自用笔记 1. 统计学习的定义与分类 1.1 统计学习的概念 统计学习(Statistical Machine Learning)是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科。 以计算机和网络为平台;以数据为研究对象;以…

PS 解析成ES流

最近做ps 解析,整理了一下: 解析如下: 这里理解为,后面会跟着pes头,在长度F00D-2-0A字节以后。

Android存储方案对比(SharedPreferences 、 MMKV 、 DataStore)

简介:本文介绍了Android开发中常用的键值对存储方案,包括SharedPreferences、MMKV和DataStore,并且对比了它们在性能、并发处理、易用性和稳定性上的特点。通过实际代码示例,帮助开发者根据项目需求选择最适合的存储方案&#xff…

Mycat2使用教程

运行环境框架包 下载地址:mycat2-install-template-1.20.zip 运行包 下载地址:mycat2-1.21-release-jar-with-dependencies.jar 说明 解压运行环境框架包,将运行包放到mycat的lib目录下 配置数据源 打开conf/datasources/prototypeDs.da…

望获实时Linux系统与大语言模型深度融合,开创实时智能无限可能!

大语言模型的崛起为智能化应用开辟了新的可能性。借助深度学习技术,这些模型能够理解和生成自然语言,处理复杂的文本和语义信息。这使得它们在诸如人机问答、内容生成和数据分析等领域展现出巨大的潜力。在实时控制领域,大语言模型能够显著提…

基于 GEE Sentinel-1 数据集提取水体

目录 1 水体提取原理 2 完整代码 3 运行结果 1 水体提取原理 水体提取是地理信息和遥感技术的关键应用之一,对于多个领域都具有重要的应用价值。它有助于更好地管理水资源,保护环境,减少灾害风险,促进可持续发展,以…

『SQLite』表的创建、修改和删除

本节摘要:主要讲述SQLite中创建、删除、修改表等操作。 创建表 CREATE TABLE 语句来创建表。 修改表 ALTER TABLE 语句来修改表名称、已有表字段,或者新增字段。 删除表 DROP TABLE 语句用来删除表. 注意: 上述内容详细讲解见文章&#…

java自动更新实体类的创建时间和更新时间3种方式

一、使用数据库的自动更新机制 1.创建表时设置创建时间和更新时间的默认值 ALTER TABLE lspace_diga.hot_city MODIFY COLUMN gmtCreate TIMESTAMP DEFAULT CURRENT_TIMESTAMP;ALTER TABLE lspace_diga.hot_city MODIFY COLUMN gmtModified TIMESTAMP DEFAULT CURRENT_TIMEST…

深入理解 pytest_runtest_makereport:如何在 pytest 中自定义测试报告

pytest_runtest_makereport 是 pytest 系统中的一个钩子函数,它允许我们在测试执行时获取测试的报告信息。通过这个钩子,我们可以在测试运行时(无论是成功、失败还是跳过)对测试结果进一步处理,比如记录日志、添加自定…

w~自动驾驶~合集16

我自己的原文哦~ https://blog.51cto.com/whaosoft/12765612 #SIMPL 用于自动驾驶的简单高效的多智能体运动预测基准 原标题:SIMPL: A Simple and Efficient Multi-agent Motion Prediction Baseline for Autonomous Driving 论文链接:https://ar…

外驱功率管电流型PWM控制芯片CRE6281B1

CRE6281B1 是一款外驱功率管的高度集成的电流型PWM 控制 IC,为高性能、低待机功率、低成本、高效率的隔离型反激式开关电源控制器。在满载时,CRE6281B1工作在固定频率(65kHz)模式。在负载较低时,CRE6281B1采用节能模式,实现较高的…

2025年安卓面试复习总结

文章目录 深入理解并熟练运用常用设计模式及反射原理,能够自定义注解及泛型,多次通过设计模式对 app 代码进行高效重构,显著提升代码的可维护性与扩展性。设计模式自定义注解泛型Kotlin泛型 精通多线程原理,对 ThreadPoolExecutor…

【微服务】SpringBoot 整合Redis实现延时任务处理使用详解

目录 一、前言 二、延迟任务的高频使用场景 三、延迟任务常用解决方案 3.1 Quartz 3.2 DelayQueue 3.2.1 Timer + TimerTask 3.2.2 ScheduledExecutorService 3.3 Redis sorted set 3.4 RabbitMQ 四、Redis实现延时队列操作实战 4.1 Redis Sorted Set 概述 4.1.1 Re…

加固服务器有什么用?

为什么越来越多的企业和个人都在加固他们的服务器?加固服务器不仅可以保护数据安全,还能提升整体系统的稳定性和可靠性。下面是聚名网的一些介绍。 加固服务器的首要目的就是提高安全性。随着网络攻击手段的不断演变,黑客和恶意软件的威胁也…

web移动端UI框架

文章目录 Vant简介主要特点和功能适用场景和用户评价 Mint UI简介主要特点和功能 cube-ui简介特性 iView Weapp简介 uni-app简介 Vant 使用vue3版本官网:https://vant-ui.github.io/vant/#/zh-CN/ 适用vue2版本官网:https://vant-ui.github.io/vant/v2/…

亚信安全2025年第1期《勒索家族和勒索事件监控报告》

本周态势快速感知 本周全球共监测到勒索事件51起,本周勒索事件数量降至近一年来最低,需注意防范。从整体上看Ransomhub依旧是影响最严重的勒索家族;本周Acrusmedia和Safepay也是两个活动频繁的恶意家族,需要注意防范。本周&#…

git①111

如果你只想提交并推送一个文件,而不是所有修改过的文件,可以按照以下步骤进行操作: 步骤: 1.查看当前修改的文件: 使用 git status 来查看哪些文件被修改了。 git status 你会看到类似以下的输出,列出了…