Linux - 复盘一次句柄数引发的故障

文章目录

  • Pre
  • (内核、用户、进程)句柄数设置
  • 问题 shell
  • 修复

在这里插入图片描述


Pre

Linux - 深入理解/proc虚拟文件系统:从基础到高级


(内核、用户、进程)句柄数设置

在Linux系统中,进程打开的最大句柄数可以通过多种方式配置,涉及不同的层次和持久性:

  1. 临时调整

    • 使用ulimit命令可以在当前shell会话中临时调整用户进程的打开文件描述符的软限制(soft limit)。例如:
      ulimit -n 65536
      
    • 若要调整硬限制(hard limit),需要超级用户权限:
      sudo ulimit -Hn 65536
      
  2. 永久性调整

    • /etc/security/limits.conf:这个文件可以用来永久性地设置用户和组的资源限制,包括打开的文件描述符数。格式如下:
      * soft nofile 65536
      * hard nofile 65536
      
      其中*表示所有用户,可以替换为具体的用户名或用户组。softhard分别表示软限制和硬限制。

在这里插入图片描述

  1. 系统全局限制
    • /proc/sys/fs/file-max:这个文件反映了系统全局可打开的文件描述符总数。调整这个值需要修改内核参数,通常需要重启系统才能生效。在/etc/sysctl.conf中添加以下行可以实现:
      fs.file-max = 6553560
      
      然后运行sysctl -p使更改生效,或者在系统启动时自动应用。

在这里插入图片描述

请记住,修改这些设置可能会影响系统性能和稳定性,特别是在提高限制时,可能会消耗更多的系统资源。因此,在进行任何更改之前,最好先评估其影响,并确保有足够的资源来支持增加的句柄数。


问题 shell

#!/bin/bash
source /etc/profile
CURPATH=$(cd "$(dirname "$0")";pwd)
JVM=$(cat $CURPATH/xxx.ini)artisanProcess="$CURPATH/artisan.jar"# now set the path to java
# [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java
# [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
# [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/appstore/programfiles/mbws_jdk
# [ ! -e "$JAVA_HOME/bin/java" ] && unset JAVA_HOMEsource /xxxx/xxxjdk.option
COMMON_JVM=$(cat /axxxx/xdded.option)if [ -f $JAVA/bin/java ];thenexport JAVA_HOME=$JAVAexport PATH=$JAVA_HOME/bin:$PATH
fiif [ -z "$JAVA_HOME" ]; thenJAVA_PATH=`dirname $(readlink -f $(which java))`if [ "x$JAVA_PATH" != "x" ]; thenexport JAVA_HOME=`dirname $JAVA_PATH 2>/dev/null`fiif [ -z "$JAVA_HOME" ]; thenerror_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better!"exit 1fi
fiwhile [ 1 -eq 1 ]
doAdminProcNum=`ps -ef | grep $rpcProcess | grep -v grep | wc -l`echo "AdminProcNum:"$AdminProcNumif [ $AdminProcNum -lt 1 ]thencd $CURPATHsudo sysctl -w fs.file-max=999999sudo sysctl -w net.ipv4.tcp_tw_reuse=1sudo sysctl -w net.ipv4.tcp_fin_timeout=15sudo sysctl -w net.core.netdev_max_backlog=4096sudo sysctl -w net.core.somaxconn=40960sudo sysctl -w net.ipv4.tcp_max_syn_backlog=40960sudo sysctl -w net.ipv4.tcp_syncookies=1sudo sysctl -w net.ipv4.tcp_syn_retries=2sudo sysctl -w net.ipv4.tcp_synack_retries=2sudo ulimit -u 999999sudo ulimit -n 999999nohup $JAVA/bin/java $JVM $COMMON_JVM -jar $artisanProcess >  /dev/null 2>&1 &cho $! > $CURPATH/tpidcd -fisleep 10
done

为了至此降权操作,增加了sudo

 sudo sysctl -w fs.file-max=999999sudo sysctl -w net.ipv4.tcp_tw_reuse=1sudo sysctl -w net.ipv4.tcp_fin_timeout=15sudo sysctl -w net.core.netdev_max_backlog=4096sudo sysctl -w net.core.somaxconn=40960sudo sysctl -w net.ipv4.tcp_max_syn_backlog=40960sudo sysctl -w net.ipv4.tcp_syncookies=1sudo sysctl -w net.ipv4.tcp_syn_retries=2sudo sysctl -w net.ipv4.tcp_synack_retries=2sudo ulimit -u 999999sudo ulimit -n 999999

导致ulimit -n 999999 不生效

cat /proc/$pid/limits

在这里插入图片描述


修复

方式一: 去掉sudo

方式二: 如下

在这里插入图片描述

对于系统服务,特别是使用 Systemd 的系统,还可以在服务单元文件(位于 /etc/systemd/system/ 或 /lib/systemd/system/)中通过 LimitNOFILE= 设置最大打开文件数。例如:

[Service]
LimitNOFILE=999999

在这里插入图片描述

修改配置文件后,可能需要重启相关服务或用户会话使设置生效。如果是修改了 /etc/security/limits.conf,通常需要用户重新登录才能看到变化。对于 Systemd 管理的服务,则需执行 systemctl daemon-reload 后重启服务。

在这里插入图片描述

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

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

相关文章

立创·天空星开发板-GD32F407VE-Timer

本文以 立创天空星开发板-GD32F407VET6-青春版 作为学习的板子,记录学习笔记。 立创天空星开发板-GD32F407VE-Timer 定时器基本定时器示例 定时器 定时器是嵌入式系统中常用的一种外设,它可以产生一定的时间间隔、延时、定时等功能,广泛应用于…

如何自动生成数据库的样本数据(以MySQL和SQLynx为例)

目录 1 功能概述 2 主要特点 3 使用场景 4 使用示例 5 结论 SQLynx 是一款领先的 SQL 集成开发环境(IDE),其强大的功能得到了全球用户的广泛认可。SQLynx 不仅在数据库管理和 SQL 查询方面表现出色,还提供了一项特别实用的功能…

VMware 三种网络模式

目录 一、网卡、路由器、交换机 二、虚拟网络编辑器 三、网络模式 1.桥接模式 通信方式 特点 配置 连通情况 使用场景 2.NAT模式 通信方式 特点 配置 连通情况 使用场景 3.仅主机 通信方式 特点 配置 连通情况 使用场景 一、网卡、路由器、交换机 网卡(Ne…

visio添加表格

插入Excel表格: 打开Microsoft Visio,新建一个空白画布。点击菜单栏中的“插入”。在插入中点击“图表”。在弹出的插入对象设置页面中选择“Microsoft Excel工作表”。点击确定按钮,然后在表格中输入内容。将鼠标点击到画布的空白处&#x…

OpenCV计算形状之间的相似度ShapeContextDistanceExtractor类的使用

操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:Visual Studio Code编程语言:C11 1.功能描述 ShapeContextDistanceExtractor是OpenCV库中的一个类,主要用于计算形状之间的相似度或距离。它是基于形状上下文(Shape Co…

OpenStack云平台管理

OpenStack云平台管理 文章目录 OpenStack云平台管理资源列表基础环境一、部署Openstack二、创建网络和路由2.1、删除默认的网络2.2、创建网络和路由2.2.1、创建外部网络2.2.2、创建内部网络 2.3、创建路由 三、创建实例3.1、配置实例3.2、配置NAT转换 四、绑定浮动IP地址五、添…

C# WinForm —— 34 ToolStrip 工具栏 介绍

1. 简介 工具栏 ToolStrip,一般紧贴在菜单栏下面 2. 属性 属性解释(Name)控件ID,在代码里引用的时候会用到Enabled控件是否启用Dock定义要绑定到容器的控件边框,默认是topAnchor定义某个控件绑定到的容器的边缘。当控件锚定到某个边缘时&a…

分类模型:MATLAB判别分析

1. 判别分析简介 判别分析(Discriminant Analysis) 是一种统计方法,用于在已知分类的样本中构建分类器,并根据特征变量对未知类别的样本进行分类。常见的判别分析方法包括线性判别分析(Linear Discriminant Analysis, …

韩顺平0基础学java——第22天

p441-459 异常exception 选中代码块,快捷键ctraltt6,即trt-catch 如果进行了异常处理,那么即使出现了异常,但是会继续执行 程序过程中发生的异常事件分为两大类: 异常体系图※ 常见的运行异常:类型转换…

EFuse概念解析

EFuse概念解析 EFUSE Key Parameter iNOM 代表的是,Efuse运行时候的电流 tNOM 代表的是,Efuse电流与时间的曲线 INOM通过VOC_Thrs设置 VOC_THRS VOC_THRS/Rsense Vsense采样小于VOC_THRS时候不动作 Vsense采样大于VOC_THRS时候根据Efuse_I2T曲线来…

平时的财经日历会影响黄金现货走势吗?

现货黄金的价格走势会受到诸多因素的影响,比如在财经日历上,美国的非农就业报告、GDP、利率公告、通胀数据等新闻和经济公告,都可能会对市场产生重大影响,尤其是当这些数据与市场预期不符的时候。所以比起单纯地进行技术分析和图表…

【C++ | 移动构造函数】一文了解C++11的 移动构造函数

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰:2024-06-12 2…

Linux基础IO【II】真的很详细

目录 一.文件描述符 1.重新理解文件 1.推论 2.证明 2.理解文件描述符 1.文件描述符的分配规则 3.如何理解文件操作的本质? 4.输入重定向和输出重定向 1.原理 2.代码实现重定向 3.dup函数 ​编辑 4.命令行中实现重定向 二.关于缓冲区 1.现象 …

【学习笔记】Linux

Linux 1、 介绍 1.1、概述 1.2、特点 1.3、Linux的发行版2、 基础篇 —— 文件系统 2.1、文件系统 2.2、目录结构3、 基础篇 —— VI/VIM 编辑器 3.1、概述 3.2、编辑器模式及常用命令4、 基础篇 —— 网络配置 4.1、VMware NetWork …

电路笔记 : 嘉立创EDA 导入、查找、设计管理器(快速寻找网络标签)功能+DRC错误检查和处理

导入功能 查找功能 可查找多种类型,如原件名称、网络标签等 设计管理器 图层查看 DRC错误 规则设置 线距问题 大多数PCB制造商能够可靠地生产5 mil间距的走线和间隙。这是一个常见的标准,适合大多数消费级和工业级电子产品。在5 mil以上的间距&#xff…

Android APP memory统计方法

目录 进程的内存信息概述 关键的术语 测试步骤 测试步骤 数据处理 数据分析: 进程内存信息 Dumpsys meminfo -a PID Procrank Procmem PID 特殊内存信息 Mali ION(multi-media,gralloc) 进程地址空间信息 /proc/pid/smaps Showmap PID …

计算机网络 —— 运输层(TCP三次握手)

计算机网络 —— 运输层(TCP三次握手) 三次握手第一次握手第二次握手第三次握手两次握手行不行? 我们今天来学习TCP的三次握手: 三次握手 TCP三次握手是TCP协议中建立连接的过程,旨在确保双方准备好进行可靠的通信。…

【HarmonyOS】鸿蒙入门学习

一、开发前的准备 (一)HarmonyOS 开发套件介绍 (二)开发者主要使用的核心套件 主要为代码开发阶段会使用到的 DevEco Studio、ArkTS、ArkUI三个工具。 (三)熟悉鸿蒙官网 1、网址 https://developer.hua…

第P10周:Pytorch实现车牌识别

第P10周:Pytorch实现车牌识别 🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 在之前的案例中,我们多是使用datasets.ImageFolder函数直接导入已经分类好的数据集形成Dataset&#xff…

创建节约机关怎样向媒体投稿报道宣传?

创建节约机关并向媒体投稿报道宣传是一项重要的工作,它不仅能够提升机关的形象,还能促进社会各界对节约型社会的认识和支持。 作为一名新晋信息宣传员,初入职场的我满腔热血,怀揣着用文字传递价值的理想,却在投稿的道路上屡遭波折。面对每月的宣传任务,我…