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_HOME


source /xxxx/xxxjdk.option
COMMON_JVM=$(cat /axxxx/xdded.option)

if [ -f $JAVA/bin/java ];then
  export JAVA_HOME=$JAVA
  export PATH=$JAVA_HOME/bin:$PATH
fi

if [ -z "$JAVA_HOME" ]; then
  JAVA_PATH=`dirname $(readlink -f $(which java))`
  if [ "x$JAVA_PATH" != "x" ]; then
      export JAVA_HOME=`dirname $JAVA_PATH 2>/dev/null`
  fi
  if [ -z "$JAVA_HOME" ]; then
        error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better!"
        exit 1
  fi
fi

while [ 1 -eq 1 ]
do
        AdminProcNum=`ps -ef | grep $rpcProcess | grep -v grep | wc -l`
        echo "AdminProcNum:"$AdminProcNum
        if [ $AdminProcNum -lt 1 ]
        then
                cd $CURPATH
                sudo sysctl -w fs.file-max=999999
                sudo sysctl -w net.ipv4.tcp_tw_reuse=1
                sudo sysctl -w net.ipv4.tcp_fin_timeout=15
                sudo sysctl -w net.core.netdev_max_backlog=4096
                sudo sysctl -w net.core.somaxconn=40960
                sudo sysctl -w net.ipv4.tcp_max_syn_backlog=40960
                sudo sysctl -w net.ipv4.tcp_syncookies=1
                sudo sysctl -w net.ipv4.tcp_syn_retries=2
                sudo sysctl -w net.ipv4.tcp_synack_retries=2
                sudo ulimit -u 999999
                sudo ulimit -n 999999
                nohup $JAVA/bin/java $JVM $COMMON_JVM -jar $artisanProcess >  /dev/null 2>&1 &
                cho $! > $CURPATH/tpid
                cd -
        fi
        sleep 10
done

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

 sudo sysctl -w fs.file-max=999999
 sudo sysctl -w net.ipv4.tcp_tw_reuse=1
 sudo sysctl -w net.ipv4.tcp_fin_timeout=15
 sudo sysctl -w net.core.netdev_max_backlog=4096
 sudo sysctl -w net.core.somaxconn=40960
 sudo sysctl -w net.ipv4.tcp_max_syn_backlog=40960
 sudo sysctl -w net.ipv4.tcp_syncookies=1
 sudo sysctl -w net.ipv4.tcp_syn_retries=2
 sudo sysctl -w net.ipv4.tcp_synack_retries=2
 sudo ulimit -u 999999
 sudo 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 后重启服务。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机组成原理 期末复习笔记整理(上)(个人复习笔记/侵删/有不足之处欢迎斧正)

零、计算机的发展 冯.诺依曼计算机的特点: 1.计算机由五大部件组成 2.指令和数据以同等地位存于存储器,可按地址寻访 3.指令和数据用二进制表示 4.指令由操作码和地址码组成 5.存储程序(首次提出存储结构) 6.以运算器为中心(现代…

大众点评全国美食POI采集780万家-2024年5月底

大众点评全国美食POI采集780万家-2024年5月底 店铺POI点位示例: 店铺id H8kTSRz3kLUQ2WtU 店铺名称 幸福西饼生日蛋糕(布心店) 十分制服务评分 8.2 十分制环境评分 8.4 十分制划算评分 8.3 人均价格 75 评价数量 119033 店铺地址 金稻田路1068号边防布心住…

Python文件操作与IO:从基础到高级技巧的完整指南

目录 一、引言 二、基础文件操作 打开文件 写入文件 读取和写入二进制文件 四、文件路径处理 五、文件操作的高级技巧 上下文管理器(with 语句) 文件锁 文件编码 使用内置模块处理文件 文件压缩与解压缩 六、案例:处理日志文件 …

支付卡产业最新发布PCI DSS v4.0.1

自2022年3月PCI DSS v4.0发布以来,受到全球支付产业高度关注,为了解决来自所有产业相关者的反馈和问题,PCI安全标准委员会(PCI SSC)发布了该标准的修订版PCI DSS v4.0.1。其中包括对格式和印刷错误的更正,也…

顶顶通呼叫中心中间件-限制最大通话时间(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件-限制最大通话时间(mod_cti基于FreeSWITCH) 一、最大通话时间 1、配置拨号方案 1、点击拨号方案 ->2、在框中输入通话最大时长->3、点击添加->4、根据图中配置->5、勾选continue。修改拨号方案需要等待一分钟即可生效 action"sched…

基于Pytorch实现AI写藏头诗

网上你找了一圈发现开源的代码不是付费订阅就是代码有问题,基于Pytorch实现AI写藏头诗看我这篇就够了。 用到的工具:华为云ModelArts平台的notebook/Pycharm/Vscode都行。 镜像:pytorch1.8-cuda10.2-cudnn7-ubuntu18.04,有GPU优先使用GPU资源。 实验背景 在短时测试使用场…

变电站SF6-O2在线监控报警系统在电力行业的创新应用

一、六氟化硫是什么? 六氟化硫又称为SF6,这种气体在常温常压下为无色无臭无毒的气体。不燃烧。对热稳定,没有腐蚀性,可以作为通用材料。电绝缘性能和消弧性能好,绝缘性能为空气的2~3倍,而且气体…

外网如何访问公司内网服务器?

在现代商业环境中,随着信息技术的快速发展,越来越多的公司有需求让远程用户在外网环境下访问公司内网服务器。这在很大程度上提高了远程办公的灵活性和效率。由于安全和网络限制等问题,实现这一目标并不是一件容易的事情。 在处理这个问题时…

【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt窗口 | 对话框 | 创建自定义对话框 文章编号:Qt 学习笔记…

[人工智能]啥是大模型?一篇文章看懂火遍全网的“AI大模型”

美国商业科技界正在升起两位“新神”。 一位是“钢铁侠”埃隆马斯克,“带领人类走向火星”; 一位是“奥特曼”山姆阿尔特曼,“带领AI走向人类”。 大多数人对马斯克很熟悉了,特斯拉汽车在中国道路上疾驰,朋友圈也经…

B端系统的颜值问题:成也框架,败也框架!

B端UI框架和前端框架的出现,让系统的搭建就像堆积木一样,十分的容易了。这也一下子把程序员的设计和审美水平拔高到了UI框架能够达到的高度。伴随而来的则是系统的堆砌、同质化、糟糕的体验,以及各种违和的组件被生搬硬套的绑定在一块&#x…

LabVIEW故障预测

在LabVIEW故障预测中,振动信号特征提取的关键技术主要包括以下几个方面: 时域特征提取:时域特征是直接从振动信号的时间序列中提取的特征。常见的时域特征包括振动信号的均值、方差、峰值、峰-峰值、均方根、脉冲指数等。这些特征能够反映振动…

电信数字员工“上岗”!重庆电信携手实在智能加快“数智化”转型

中国电信股份有限公司重庆分公司(以下简称重庆电信)与实在智能已达成合作,由实在智能为其建设RPA数字员工,首批已覆盖数十个业务场景,大幅提升相应业务自动化和智能化水平。深度适配电信业务运转的RPA数字员工&#xf…

JVM原理之运行时数据区域

Java运行时数据区(Runtime Data Area)是Java虚拟机(JVM)在运行Java程序时内部维护的一系列数据区域。这些区域共同协作,确保Java程序能够高效、稳定地运行。本文将详细介绍Java运行时数据区的结构和作用。 java虚拟机运行时数据区域 根据《Java虚拟机规范》规定,jvm内存…

【Java笔记】第11章:内部类

前言1. 讲解结语 上期回顾:【Java笔记】第10章:接口 个人主页:C_GUIQU 归属专栏:【Java学习】 前言 各位小伙伴大家好!上期小编给大家讲解了Java中的接口,接下来讲讲Java中的内部类! 1. 讲解 Java中的内…

通用大模型VS垂直大模型,相辅相成!

1.通用大模型: 如OpenAI的GPT系列、Google的PaLM等,因其广泛的训练数据来源和强大的泛化能力,展现出在多种任务和场景中的应用潜力。它们能够处理从文本生成、代码编写到语言翻译等多种复杂任务,适应性强,减少了针对单…

一文读懂Web Codecs API:浏览器背后的媒体魔术师

引言 ​在早期的Web 网页中,视频播放通常要依靠 Flash 和 Silverlight 等插件来完成,浏览器是不支持直接播放视频的。 随着网络技术的发展,视频这种媒体方式的需求变得普遍,HTML5中,出现了一个新的元素Video&#xf…

可积分兑换收银的会员卡小程序源码系统 带完整的安装代码包+搭建部署教程

系统概述 本会员卡小程序源码系统基于主流的前后端分离架构设计,前端采用Vue.js框架开发,后端服务则通过Node.js实现,数据库选用MySQL存储会员数据和交易记录。这样的技术栈确保了系统的高性能、易维护性和良好的扩展性。 代码示例 系统特色…

Win10 打开默认共享,提示 “拒绝访问“ 解决方法

1、打开计算机管理,默认共享C盘是开启的,如下图 2、但是想要能打开,防火墙还需要开启445端口 3、此时我们可以通过如下方式进行访问 4、输入账号密码后提示 "拒绝访问" 5、解决方法: (1)打开注…

【车载AI音视频电脑】智能驾驶监控系统,校车/警车/货车/油罐车AI分析与监控方案

校车监控方案 实时视频监控、校车位置查询、视频回放、轨迹回放。 2、 预设校车行驶线路,如有偏离,产生报警。 3、 预设校车车速,如超速,产生报警。 4、 预设学生下车,抓拍图片上传监管中心、预防小孩被困车内。 5…