Linux - 复盘一次句柄数引发的故障
文章目录
- Pre
- (内核、用户、进程)句柄数设置
- 问题 shell
- 修复

Pre
Linux - 深入理解/proc虚拟文件系统:从基础到高级
(内核、用户、进程)句柄数设置
在Linux系统中,进程打开的最大句柄数可以通过多种方式配置,涉及不同的层次和持久性:
-
临时调整:
- 使用
ulimit命令可以在当前shell会话中临时调整用户进程的打开文件描述符的软限制(soft limit)。例如:ulimit -n 65536 - 若要调整硬限制(hard limit),需要超级用户权限:
sudo ulimit -Hn 65536
- 使用
-
永久性调整:
- /etc/security/limits.conf:这个文件可以用来永久性地设置用户和组的资源限制,包括打开的文件描述符数。格式如下:
其中* soft nofile 65536 * hard nofile 65536*表示所有用户,可以替换为具体的用户名或用户组。soft和hard分别表示软限制和硬限制。
- /etc/security/limits.conf:这个文件可以用来永久性地设置用户和组的资源限制,包括打开的文件描述符数。格式如下:

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

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

相关文章:
Linux - 复盘一次句柄数引发的故障
文章目录 Pre(内核、用户、进程)句柄数设置问题 shell修复 Pre Linux - 深入理解/proc虚拟文件系统:从基础到高级 (内核、用户、进程)句柄数设置 在Linux系统中,进程打开的最大句柄数可以通过多种方式配置…...
2024/06/13--代码随想录算法2/17| 62.不同路径、63. 不同路径 II、343. 整数拆分 (可跳过)、96.不同的二叉搜索树 (可跳过)
62.不同路径 力扣链接 动态规划5步曲 确定dp数组(dp table)以及下标的含义: dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。确定递推公式,dp[i][j] d…...
Android低代码开发 - 直接创建一个下拉刷新列表界面
看了我Android低代码开发 - 让IDE帮你写代码这篇文章的小伙伴,大概都对Dora全家桶开发框架有基本的认识了吧。本篇文章将会讲解如何使用dora-studio-plugin快捷创建一个下拉刷新列表界面。 效果演示 这样直接通过图形界面的方式就创建好了下拉刷新上拉加载空态界面…...
23.Dropout
在深度学习的训练过程中,过拟合是一个常见的问题。为了解决这个问题,研究者们提出了多种正则化技术,其中Dropout技术因其简单而有效的特点,得到了广泛的应用。本文将对Dropout技术的工作原理、主要优点、潜在缺点以及应用场景进行…...
电脑撤回的快捷键是什么?
下面给大家介绍了各种办公应用的撤回以及反向撤回快捷键介绍,在ps、excel中都是可以使用的。 撤回键是ctrl加什么 1、撤销的快捷键是“CtrlZ”,用于取消上一步操作,对与在电脑系统上或软件内的操作均适用。重复按下可以取消多步操作。 2、而…...
每日一题——Python实现PAT甲级1116 Come on! Let‘s C(举一反三+思想解读+逐步优化)五千字好文
一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 代码点评 时间复杂度分析 空间复杂度分析 总结 我要更强 优化思路 优化…...
spring-data-mongodb版本兼容问题
spring-data-mongodb与mongodb驱动有兼容性问题,不匹配会报NoSuchMethod异常,mongodb的java驱动包在4.0之后由mongodb-java-driver更名为mongodb-driver-sync。 spring-data-mongodb包依赖中有mongodb-driver-core,但缺诸如MongoCollection等…...
Java的核心类库
引言 在Java编程中,熟练掌握常用类与对象操作是开发的基础。Java的核心类库提供了丰富的功能,可以帮助开发者高效地处理各种编程任务。本文将详细介绍Java字符串操作、集合框架、日期与时间处理等内容,并通过图表和表格进行总结与示范。 字符…...
NSS题目练习9
[极客大挑战 2020]welcome 界面打开后一片空白,查看题目描述,翻译过来是 1.除了GET请求方法,还有一种常见的请求方法… 2.学习一些关于sha1和array的知识。 3.更仔细地检查phpinfo,你会发现标志在哪里。 补充: sh…...
JS 【算法】二分查找
使用场景 在有序数组中查找目标元素 const arr [1, 2, 3, 4, 5, 6, 7, 8, 9] const target 2 console.log(binarySearch1(arr, target)) console.log(binarySearch2(arr, target))循环实现 function binarySearch1(arr, target) {const length arr.lengthif (length 0) re…...
前端工程化工具系列(十四)—— Webpack(v5.91.0):应用模块打包器与构建工具
Webpack 是用于现代 JavaScript 应用程序的静态模块打包器。 当 webpack 处理应用程序时,它会在内部构建一个依赖关系图,该图映射项目所需的每个模块最终会生成一个或多个包。 1 概念 1.1 modules Webpack 中,无论是 JS 、CSS 还是图片等&…...
ThinkPHP+Bootstrap简约自适应网址导航网站源码
使用 ThinkPHPbootstrap 开发,后台采用全局 ajax 无刷新加载,前后台自适应,前台页面非常简洁适合自己收藏网站或做导航网站。 搭建教程: 1.整个主机 2.绑定解析域名 3.上传源码,解压 把解压出来的 nav.sql 文件导入数…...
Flutter 使用ffigen生成ffmpeg的dart接口
Flutter视频渲染系列 第一章 Android使用Texture渲染视频 第二章 Windows使用Texture渲染视频 第三章 Linux使用Texture渲染视频 第四章 全平台FFICustomPainter渲染视频 第五章 Windows使用Native窗口渲染视频 第六章 桌面端使用texture_rgba_renderer渲染视频 第七章 使用ff…...
(message): No CUDA toolset found.
解决方法: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\extras\visual_studio_integration\MSBuildExtensions\ 下的4个文件 复制到 D:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\BuildCustomizations\下。…...
【python】邮箱正则验证
当然可以。以下是一个使用Python正则表达式的例子,用于检查一个字符串是否是一个有效的电子邮件地址: import re def is_valid_email(email):regex r^[a-zA-Z0-9._%-][a-zA-Z0-9.-]\.[a-zA-Z]{2,}$return bool(re.match(regex, email)) # 测试电子邮件…...
深度学习(四)——torchvision中数据集的使用
1. 参数详解 torchvision中每个数据集的参数都是大同小异的,这里只介绍CIFAR10数据集 该数据集的数据格式为PIL格式 class torchvision.datasets.CIFAR10(root:str,train:boolTrue,transform:Optional[Callable]None,target_transform:Optional[Callable]None,do…...
【全开源】图书借阅管理系统源码(ThinkPHP+FastAdmin)
📚图书借阅管理系统:打造你的私人图书馆 一款基于ThinkPHPFastAdmin开发的简易图书借阅管理系统,一款轻量级的图书借阅管理系统,具有会员管理,图书管理,借阅及归还管理,会员充值等基本功能&…...
Mysql中使用where 1=1有什么问题吗
昨天偶然看见一篇文章,提到说如果在mysql查询语句中,使用where 11会有性能问题?? 这着实把我吸引了,因为我项目中就有不少同事,包括我自己也有这样写的。为了不给其他人挖坑,赶紧学习一下&…...
中心极限定理的MATLAB例
独立同分布的中心极限定理: 设 X 1 , X 2 , … , X n X_1, X_2, \ldots, X_n X1,X2,…,Xn 是独立同分布的随机变量序列,且 E ( X i ) μ E(X_i) \mu E(Xi)μ, D ( X i ) σ 2 > 0 D(X_i) \sigma^2 > 0 D(Xi)σ2>0&a…...
定义input_password函数,提示用户输入密码.如果用户输入长度<8,抛出异常,如果用户输入长度>=8,返回输入的密码
def input_password(password):str1passwordlen1len(str1)try:if len1<8:raise ValueError("密码长度不能小于8")else:return print(f"你的密码为:{password},请确认")except ValueError as e:print(f":Error is {e}")number1input("请…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
