【银河麒麟高级服务器操作系统实例】金融行业TCP连接数猛增场景的系统优化

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

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

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

文档中心:https://documentkylinos.cn


服务器环境以及配置

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

物理机

外网/私有网络/无网络

私有网络

处理器:

HUAWEI Kunpeng 920 5220

内存:

512 GiB

整机类型/架构:

Huawei  S920S00

BIOS版本:

Huawei Corp.  1.79  08/21/2021

具体操作系统版本

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

Kylin Linux Advanced Server V10 (Tercel) V10 (Tercel)

内核版本

4.19.90-23.8.v2101.ky10.aarch64

现象描述

重点系统投产,TCP的连接数猛增,现在已经到15000个网络连接,需要评估下操作系统的瓶颈,如何优化可保证业务不会出行例如somaxconn,backlog等问题。

环境分析

nic0和nic1配置mode 4组成bond0。

nic网卡的驱动为mlx5_core,网卡的ring buffer为1024。

从sosreport可见,当时的tcp连接,查看./proc/net/sockstat文件提供了关于Linux系统中套接字使用情况的统计信息。

sockets: used 14462:表示系统当前正在使用的套接字总数为14462个。

TCP: inuse 9030 orphan 0 tw 106 alloc 14155 mem 363:

inuse 9030:表示当前有9030个TCP套接字处于使用状态。

orphan 0:孤立的TCP套接字数量为0。孤立套接字是那些没有应用程序引用但仍在TCP协议栈中的套接字。

tw 106:表示处于TIME_WAIT状态的TCP套接字数量为106。TIME_WAIT是TCP连接正常关闭后的一个临时状态。

alloc 14155:表示已分配的TCP套接字总数为14155个,包括所有状态的套接字。

mem 363:表示TCP套接字使用的内存量(以页为单位),这里为363页。

相关建议

1、增加最大文件描述符数:每个TCP连接都需要一个文件描述符。可以通过增加系统允许的最大文件描述符数来确保有足够的资源处理大量的连接。

修改 /etc/security/limits.conf 文件,增加 nofile 的限制,例如:

* soft nofile 131072

* hard nofile 131072

2、内核参数优化建议

内核参数

解释

建议

fs.aio-max-nr

这个参数定义了系统能够分配的最大异步 I/O 操作数。这是一个系统范围的限制,意味着所有进程的异步 I/O 操作总数不能超过这个值。如果异步 I/O 请求(aio)的数量达到这个上限,进一步的 aio 请求可能会失败,或者变为同步操作。

/proc/sys/fs/aio-max-nr 的默认值可能因内核版本和发行版而异,但通常是 65536。这个默认值对于大多数系统来说是足够的,但对于高负荷的服务器或者大量使用异步 I/O 的应用程序,可能需要增加这个值。

如果应用程序大量依赖异步 I/O,性能瓶颈或者 aio-nr 接近 aio-max-nr 的情况,可以尝试增加 aio-max-nr 的值。一个常见的做法是将其设置为 1048576(这是默认值的大约16倍)或者更高,具体取决于系统和应用需求。

如果无法确认,建议设置为 1048576

net.core.somaxconn

net.core.somaxconn 是一个 Linux 内核参数,它控制了 socket 监听队列的最大长度。这个参数对于网络服务器尤其重要,因为它影响了服务器能够接受的等待接受的TCP连接请求的数量。

当一个应用程序调用 listen() 函数时,它需要指定一个参数来决定能够排队等待接受的尚未建立连接的客户端数量。net.core.somaxconn 定义了这个队列的最大长度限制。如果应用程序尝试设置比 net.core.somaxconn 更大的值,实际的队列长度将被限制在 net.core.somaxconn 的值。

对于需要处理大量并发连接的服务器,增加 net.core.somaxconn 的值可以提高服务器的接受新连接的能力。例如,对于高并发的 Web 服务器,可能需要将其设置到更高的值,如 1024 或更高。

增加监听队列长度可能会增加系统对资源的消耗(尤其是内存),因此在进行调整时需要根据服务器的实际负载和资源情况做出合理的配置。

某些应用程序可能有自己的设置或限制,也需要检查并确保应用程序能够充分利用更大的监听队列。

net.ipv4.tcp_max_syn_backlog

指定了系统用于保存半连接状态(SYN_RECEIVED)的SYN请求队列的最大长度。这个队列存储的是已经接收到SYN包,但还未完成三次握手的连接请求。

当系统开启SYN Cookies功能时(通过/proc/sys/net/ipv4/tcp_syncookies参数控制),系统能够在SYN队列满时仍然接受新的连接请求,因为SYN Cookies机制不依赖于维护状态信息。它通过一种特殊的方式计算序列号来避免使用SYN队列。因此,当SYN Cookies开启时,tcp_max_syn_backlog的设置对系统的行为影响较小。

可以保持原来的2048或者调大为4096。

 net.ipv4.ip_local_port_range

此内核参数用于定义本地端口范围。该参数指定了在本地发起的网络连接所使用的可用 端口范围。 TCP/IP 协议使用端口来标识不同的网络应用程序或服务。在客户端发起与服务器的连接时,客户端会随机选择一个未被占用的本地端口来发送数据。这个本地端口是临时的,仅在连接的生命周期内使用,并在连接关闭后释放。 net.ipv4.ip_local_port_range 参数定义了可供系统使用的本地端口范围的起始端口和结束端口。它的默认值通常是从 32768 到 60999。

建议值为 30000 65500。在如在高并发的网络应用中,如果可用的本地端口数目较少,可能会导致端口耗尽和端口竞争, 从而影响应用程序的性能。通过扩大可用的本地端口范围,减少端口耗尽的可能性,并提高应用程序的并发性能。

net.ipv4.tcp_tw_reuse

此内核参数用于控制 TIME-WAIT 状态的 TCP 连接是否可以被复用。在 TCP 连接正常关闭后,套接字会进入 TIME_WAIT 状态,通常持续 2 倍的 MSL(Maximum Segment Lifetime,最大报文段生存时间)。这个状态确保了在网络上迷失的最后数据包能被正确处理,防止旧连接的数据干扰新连接。

设置 net.ipv4.tcp_tw_reuse 参数为 1(启用)可以使系统允许在 TIME-WAIT 状态的连接上进行地址重用。这意味着,当一个新的连接尝试使用一个已经处于 TIME-WAIT 状态的地址和端口组合时,内核可以复用该地址和端口,从而允许新连接立即建立,而不必等待 TIME-WAIT 状态的连接完全释放。

设置 net.ipv4.tcp_tw_reuse 参数为 0(禁用,通常默认值)则表示不允许地址重用,新连接必须等待 TIME-WAIT 状态的连接彻底释放之后才能使用相同的地址和端口组合。

建议值为 1。启用 net.ipv4.tcp_tw_reuse 可以在例如面对大量短暂连接的情况时

提高系统性能。

net.ipv4.tcp_max_tw_buckets

表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数值,TIME_WAIT套接字将立刻被清除并打印警告信息。对于Apache、Nginx等服务器来说可以将其调低一点,如改为5000~30000,不同业务的服务器也可以给大一点,比如LVS、Squid。

此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。

如果系统有大量的 TIME_WAIT 状态连接,并且你观察到日志中出现警告说 "time wait bucket table overflow",这表明当前的 tcp_max_tw_buckets 值过小。这时可以考虑增加该值。

建议设置为32768 或更高。

修改/etc/sysctl.conf文件,而后执行sysctl -p

fs.aio-max-nr=1048576

net.core.somaxconn=1024

net.ipv4.ip_local_port_range=30000 65500

# net.ipv4.tcp_tw_reuse默认为1

# net.ipv4.tcp_max_tw_buckets=32768,当前环境已经是262144,可能用户已调整过

3、建议升级最新的SP1内核,以消除已知问题,使环境更加稳定。

4、网卡调整

ethtool -G nic0 tx 4096 rx 4096
ethtool -G nic1 tx 4096 rx 4096

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

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

相关文章

项目实战:Qt+OpenCV仿射变换工具v1.1.0(支持打开图片、输出棋盘角点、调整偏移点、导出变换后的图等等)

若该文为原创文章,转载请注明出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/143105881 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、Op…

python中frida的安装+frida-server(雷电模拟器)保姆级安装教程

一.安装雷电模拟器 雷电模拟器官网 直接下载安装即可 (1)打开必要权限 雷电模拟器的设置已完毕 二.安装adb工具 本文以autox.js来实现adb操作 (1)vscode中下载auto.js插件 (2)雷电模拟器下载autox.j…

【大模型实战篇】大模型分词算法Unigram及代码示例

1. 算法原理介绍 与 BPE 分词(参考《BPE原理及代码示例》)和 WordPiece 分词(参考《WordPiece原理及代码示例》)不同,Unigram 分词方法【1】是从一个包含足够多字符串或词元的初始集合开始,迭代地删除其中的…

Spring Boot Druid 数据库连接池入门

1. Druid 单数据源 1.1 引入依赖 在 pom.xml 文件中&#xff0c;引入相关依赖。 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-insta…

《异常处理与资源管理:构建稳定程序的关键纽带》

#1024程序员节&#xff5c;征文# 在软件开发的广袤领域中&#xff0c;异常处理和资源管理如同两座坚实的基石&#xff0c;共同支撑着程序的稳定运行。它们之间的关系紧密而微妙&#xff0c;对于构建可靠、高效的软件系统起着至关重要的作用。让我们深入探讨异常处理和资源管理…

idea项目搭建的四种方式: 一(以idea2017为例)

目录 1. 普通java项目 2. 普通JavaWEB项目 3. maven的JavaWEB项目 4. maven的java项目 1. 普通java项目 ①点击“Create New Project”&#xff1b; ②选择“Java”&#xff0c;选择自己安装的jdk&#xff0c;点击“Next”&#xff1b; ③填好项目名称和路径&#xff1b;…

【LeetCode】动态规划—2466. 统计构造好字符串的方案数(附完整Python/C++代码)

动态规划—2466. 统计构造好字符串的方案数 题目描述前言基本思路1. 问题定义举例&#xff1a; 2. 理解问题和递推关系动态规划思想&#xff1a;状态定义&#xff1a;状态转移方程&#xff1a;边界条件&#xff1a; 3. 解决方法动态规划方法伪代码&#xff1a; 4. 进一步优化5.…

MATLAB图像检索系统

MATLAB图像检索系统应用背景 基于内容的图像检索&#xff08;CBIR&#xff09;是一个非常热门的研究领域。本文在对颜色特征、形状特征和纹理特征的研究基础上&#xff0c;将三种特征结合在一起&#xff0c;实现了可以自定义权重的综合特征的图像检索系统&#xff0c;并在 平…

推动AI技术研发与应用,景联文科技提供专业高效图像采集服务

景联文科技提供专业图像采集服务&#xff0c;涵盖多个领域的应用需求。 包含人体图像、人脸图像、手指指纹、手势识别、交通道路、车辆监控等图像数据集&#xff0c;计算机视觉图像数据集超400TB&#xff0c;支持免费试采试标。 高质量人像采集服务&#xff1a;支持不同光线条件…

网络知识总结

osi七层模型 osi七层模型分为&#xff1a;应用层&#xff0c;表示层&#xff0c;会话层&#xff0c;传输层&#xff0c;网络层&#xff0c;数据链路层&#xff0c;物理层 应用层&#xff1a;客户端与服务端之间建立一个通话界面表示层&#xff1a;对数据进行语言转换&#xf…

【Unity】Unity Shader学习笔记(八)基础纹理2:高度纹理、法线纹理、模型空间下的法线纹理、切线空间下的法线纹理光照计算

文章目录 凹凸映射法线纹理设置高度纹理&#xff08;Height Map&#xff09;法线纹理&#xff08;Normal Map&#xff09;模型空间的法线纹理切线空间的法线纹理优劣对比 切线空间下的法线纹理光照计算最终效果完整代码TANGENT语义内置宏 TANGENT_SPACE_ROTATIONObjSpaceLightD…

028.魔改浏览器-抓取closed的shadowRoot下的内容

一、什么是Shadow DOM Shadow DOM是一种在web开发中用于封装HTML标记、样式和行为的技术&#xff0c;以避免组件间的样式和脚本冲突。它允许开发者将网页的一部分隐藏在一个独立的作用域内&#xff0c;从而实现更加模块化和可维护的代码结构 二、js操作Shadow DOM // 获取宿…

【火山引擎】AIGC图像风格化 | 风格实践 | PYTHON

目录 1 准备工作 2 实践 代码 效果图 1 准备工作 ① 服务开通 确保已开通需要访问的服务。您可前往火山引擎控制台,在左侧菜单中选择或在顶部搜索栏中搜索需要使用的服务,进入服务控制台内完成开通流程。

云手机:社交平台运营的热门工具

随着互联网的飞速发展&#xff0c;社交平台已经成为企业推广和营销的核心渠道。传统的运营方式已经无法满足高效运营的需求&#xff0c;而云手机作为新兴工具&#xff0c;逐渐成为社交平台运营的前沿趋势。本文将深入分析云手机如何优化社交平台的运营流程&#xff0c;助力企业…

足浴店+闸机+智能衣柜+门票系统一体化管理系统解决方案——未来之窗行业应用跨平台架构

一、足浴店收银台 二、智能柜子 三、智能闸机 在收银台开台后&#xff0c;直接通过手环开闸机 1. 提高效率&#xff1a;减少了顾客等待人工操作闸机的时间&#xff0c;能够快速进入店内&#xff0c;提升顾客的进店体验。 2. 便捷服务&#xff1a;无需繁琐的钥匙或卡片&#xf…

新电脑Win11家庭中文版跳过联网激活方法(教程)

预装Win11家庭中文版的新电脑&#xff0c;如何跳过联网激活&#xff1b;由于微软限制必须要联网激活&#xff0c;需要使用已有的微软账户登入或者注册新的微软账户后才可以继续开机使用&#xff0c;Win11联网后系统会自动激活。下面介绍一下初次开机初始化电脑时如何跳过联网激…

LLM:reward-model-deberta-v3-large-v2模型结构

https://hf-mirror.com/OpenAssistant/reward-model-deberta-v3-large-v2是在做合成数据的质量打分时的奖励模型。 模型依托deberta-v3-large-v2编码模型&#xff0c;给定一个qa对&#xff0c;能够给出一个分数来衡量qa对的质量。没有公开训练细节&#xff0c;由于模型的输出层…

llama.cpp 去掉打印,只显示推理结果

llama.cpp 去掉打印&#xff0c;只显示推理结果 1 llama.cpp/common/log.h #define LOG_INF(...) LOG_TMPL(GGML_LOG_LEVEL_INFO, 0, __VA_ARGS__) #define LOG_WRN(...) LOG_TMPL(GGML_LOG_LEVEL_WARN, 0, __VA_ARGS__) #define LOG_ERR(…

基于微信小程序的电影交流平台

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

毕业设计选题:基于Hadoop的热点新闻分析系统的设计与实现

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 新闻类型管理 主题标签管理 热点新闻管理 新闻…