Linux中程序的limits中的Max open files的配置由哪些參數決定

在 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;從設計規范、開發規范、…