在 Linux 中,程序的 Max open files(最大打开文件数,即 ulimit -n)由多个层级的参数共同控制,具体如下:

1. 内核级全局限制(系统默认上限)

/proc/sys/fs/file-max 控制,该值表示整个系统允许打开的最大文件数。
查看方法

cat /proc/sys/fs/file-max
# 输出示例:1234567

临时修改(重启后失效):

sysctl -w fs.file-max=2000000

永久修改(推荐):
/etc/sysctl.conf 中添加或修改:

fs.file-max = 2000000

然后执行:

sysctl -p

2. 用户级限制(PAM 模块)

通过 /etc/security/limits.conf/etc/security/limits.d/ 目录下的配置文件设置。
配置格式

<domain>    <type>    <item>    <value>
  • domain:用户名、组名(@groupname)或 *(所有用户)。
  • typesoft(当前会话限制)或 hard(硬限制,不可超过)。
  • itemnofile(文件描述符限制)。
  • value:具体数值。

示例(对所有用户生效):

* soft nofile 65536
* hard nofile 131072

生效条件
需确保 PAM 模块加载(检查 /etc/pam.d/common-session):

session required pam_limits.so

3. 服务特定限制(systemd 服务)

对于通过 systemd 管理的服务(如 Kafka、Nginx),需在服务配置文件中设置。
修改方法

  1. 编辑服务文件(以 Kafka 为例):
    systemctl edit kafka.service
    
  2. 添加或修改以下内容:
    [Service]
    LimitNOFILE=100000
    
  3. 重启服务:
    systemctl daemon-reload
    systemctl restart kafka
    

4. 会话级临时限制(shell 会话)

在当前 shell 中临时修改(仅对当前会话有效):

ulimit -n 65536  # 设置 soft 限制
ulimit -Hn 131072 # 设置 hard 限制

5. 程序内部限制

某些程序会在代码中硬编码最大文件数限制,需修改程序配置:

  • Java 程序:通过 ulimitsystemd 配置。
  • Nginx:在 nginx.conf 中添加:
    worker_rlimit_nofile 65536;
    

6. 查看实际生效值

  • 查看当前 shell 限制

    ulimit -n  # soft 限制
    ulimit -Hn # hard 限制
    
  • 查看进程限制

    cat /proc/<PID>/limits | grep "Max open files"
    # 示例:
    # Max open files            65536                131072               files
    

配置优先级(从低到高)

  1. 内核默认值/proc/sys/fs/file-max
  2. 用户全局限制/etc/security/limits.conf
  3. systemd 服务限制service.conf
  4. 会话临时限制ulimit 命令)
  5. 程序内部硬编码限制

最佳实践

  1. 调整顺序:先改系统全局(file-max),再改用户限制,最后针对特定服务配置。
  2. 监控工具:使用 lsofss 监控系统打开文件数:
    lsof | wc -l  # 查看系统当前打开的文件总数
    
  3. 生产环境建议
    • 对于高并发服务(如 Kafka、Elasticsearch),设置 nofile100000+
    • 确保 fs.file-max 大于所有服务 nofile 的总和。

通过以上配置,可有效提升系统允许的最大文件打开数,避免 “Too many open files” 错误。

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

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

相关文章

git clone xxx.git 提示报错:fatal: Unable to find remote helper for ‘http‘

[rootroot /home]# git clone http://gitlab.xxx.qunar.com/xx/xxx.git Cloning into ‘xxx’… fatal: Unable to find remote helper for ‘http’ 我今天在Linux服务器上执行git clone一个仓库的代码到机器上&#xff0c;但是执行的时候提示上面的错误&#xff0c;我就很诧异…

【机器学习笔记Ⅰ】10 特征工程

特征工程&#xff08;Feature Engineering&#xff09;详解 特征工程是机器学习和数据科学中的核心环节&#xff0c;旨在通过对原始数据的转换、组合和提取&#xff0c;构建更适合模型的高质量特征。其质量直接决定模型性能上限&#xff08;“数据和特征决定了模型的上限&#…

20250708-03-string结构及命令详解_笔记

一、字符串操作1. set命令&#xfeff;1&#xff09;set命令详解&#xfeff;&#xfeff;基本语法与参数命令格式&#xff1a;set key value [ex 秒数]/[px 毫秒数][nx]/[xx]有效期设置&#xff1a;ex参数&#xff1a;以秒为单位设置过期时间&#xff0c;如set a 1 ex 10表示1…

SpringBoot3-集成MybatisPlus

此次操作是在多模块下进行的&#xff0c;SpringBoot3-规划多模块目录 添加管理依赖 根模块 zibocoder-parent 的 pom.xml 中添加 MybatisPlus bom 管理依赖 <properties>...<mybatis-plus.version>3.5.12</mybatis-plus.version>... </properties> <…

部署MongoDB

环境:CentOS7 添加 MongoDB 官方 YUM 仓库 sudo vi /etc/yum.repos.d/mongodb-org-6.0.repo 将以下内容粘贴到文件中(以 MongoDB 6.0 为例): [mongodb-org-6.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86…

重学前端002 --响应式网页设计 CSS 基础

文章目录css 样式特殊说明根据在这里 Freecodecamp 实践&#xff0c;调整顺序后做的总结。 css 样式 body {background-color: red; # 跟background-image 不同时使用background-image: url(https://cdn.freecodecamp.org/curriculum/css-cafe/beans.jpg);font-family: sans-…

Zig高并发爬取数据简洁模版

上文中我们介绍了Zig语言得爬虫的有些优劣势&#xff0c;想必大家对于自身项目选择那种语言做爬虫应该有些思路了&#xff0c;今天我将使用Zig的标准库来构建一个简单的高并发爬虫模板。由于Zig的异步机制和标准库中的http模块&#xff0c;我们可以实现一个基于事件循环的爬虫。…

IS-IS 协议 | LSP 传输与链路状态数据库同步机制

略作整理&#xff0c;待校。IS-IS 中 SRM 与 SSN 标志的作用及协同机制 SRM 和 SSN 标志的作用 在 IS-IS 协议中&#xff0c;SRM 和 SSN 是两个关键标志&#xff0c;用于控制和优化 LSP&#xff08;Link State PDU,链路状态信息&#xff09;在网络中的泛洪与同步过程。 一、SRM…

xxl-job 改造适配pg数据后的Jenkins自动部署

接上文适配pg数据库之后需要进行部署&#xff0c;便有了此文 1.下载并安装Jenkins如下&#xff1a; https://mirrors.jenkins.io/war-stable/2.504.3/jenkins.war nohup java -jar jenkins.war --httpPort8080 & 启动Jenkins并解锁安装需要的环境&#xff0c;git&#xff0…

数据库Oracle从入门到精通!第四天(并发、锁、视图)

八、并发控制数据库是一个共享资源&#xff0c;可以为多个应用程序所共享&#xff0c;这些程序可以串行执行&#xff08;排队执行&#xff09;&#xff0c;但是很多情况下&#xff0c;可能出现多个程序或一个程序中的多个进程并行的执行&#xff0c;这就是数据库的并行操作&…

EXCEL(带图)转html

文章目录叙述1、效果2、excel 转换主逻辑3、其他补充3.0 主前端bootstrap3.1 my.css&#xff1a;3.2 my.js3.3 入口home.html3.4 Data.ashx叙述 要实现H5 展示excel 查询 了一下没有好的办法,自己写了一个,简单记录一下 1、效果 用bootstrap 根据sheet做了一个菜单。 2、exc…

小程序富文本Editor插入图片、超链接、公式等的一次尝试

小程序插入图片 通过EditorContext.insertImage接口可以实现图片的插入&#xff1a; EditorContext.insertImage({src,width,height,data, })如何插入超链接、公式、视频、表格等等? 通过EditorContext.insertCustomBlock应该是可以实现的&#xff0c;具体实现方式我没有了…

传输层协议TCP、UDP

传输层协议TCP、UDP 1、TCP和UDP报文格式 传输层协议TCPvsUDP 传输层主要两个传输协议&#xff0c;分别是TCP和UDP&#xff0c;负责提供流量控制、排序服务和错误校验。 &#xff08;1&#xff09;TCP是面向连接的&#xff0c;一般用于传输数据量比较少&#xff0c;且对可靠性要…

设计模式—专栏简介

大学总是忙着参加ACM实验室的各种事情&#xff0c;到了毕业的时候&#xff0c;对于设计模式也是仅了解单例模式。毕业后&#xff0c;刚开始代码也是乱写一通&#xff0c;完全没有章法。整个开发环境也是为了解决问题&#xff0c;从来没有考虑结构化什么的&#xff08;没办法&am…

面试150 链表的复制

思路 python可以使用调库法&#xff0c;使用深度拷贝 """ # Definition for a Node. class Node:def __init__(self, x: int, next: Node None, random: Node None):self.val int(x)self.next nextself.random random """class Solution:de…

MySQL分布式ID冲突详解:场景、原因与解决方案

引言 在分布式系统开发中&#xff0c;你是否遇到过这样的崩溃时刻&#xff1f;——明明每个数据库实例的自增ID都从1开始&#xff0c;插入数据时却提示“Duplicate entry ‘100’ for key ‘PRIMARY’”&#xff1b;或者分库分表后&#xff0c;不同库里的订单ID竟然重复&#x…

c++文字游戏_闯关打怪2.0(开源)

本次更新内容: 1.增强对手性能 2.可暂停(按N) 3.修复些许bug 4.增加boos关(第10、20、30...关) 1. 游戏概述 本游戏是一个基于Windows控制台的回合制战斗游戏,采用俯视视角的2D平面设计。玩家控制角色"p"在1325大小的封闭场景中与敌人"@"战斗,通过…

Java学习第十二部分——idea各种项目简介

目录 一.前言 二.语言介绍 三.生成器介绍 四.拓展 一.前言 打开idea项目创建时发现如上情况&#xff0c;“新建项目”下面的是语言&#xff0c;生成器下面的是这些语言对应的生成器工具&#xff0c;本文将简单介绍。 二.语言介绍 Java 用途&#xff1a;Java是一种广泛使…

Codeforces Round 868 (Div. 2) D. Unique Palindromes(1900,构造)

Problem - D - Codeforces 不错的字符串构造体&#xff0c;记录一下 首先注意到k≤20这一条件。对于一个长度为n的字符串&#xff0c;最多有n个不同的回文子串&#xff0c;这种情况出现在所有字符都相同时。因此&#xff0c;限制条件中的xi必须满足xi≤ci&#xff0c;且相邻两…

ClickHouse 全生命周期性能优化

引言 ClickHouse作为列式存储的OLAP数据库&#xff0c;以其极致的查询性能著称&#xff0c;但"高性能"并非开箱即用。不合理的表设计、SQL写法或集群配置&#xff0c;可能导致性能衰减甚至服务不可用。本文基于ClickHouse 24.3版本&#xff0c;从设计规范、开发规范、…