linux最大打開文件句柄數


linux最大打開文件句柄數,即打開文件數最大限制,就是規定的單個進程能夠打開的最大文件句柄數量(Socket連接也算在里面,默認大小1024)

liunx中文件句柄有兩個限制,一種是用戶級的,一種是系統級的(也叫內核級)

  • 系統級的最大限制:

  cat /proc/sys/fs/file-max

  • 用戶級的最大限制

  ulimit -n(默認是1024,向阿里雲華為雲這種雲主機一般是65535)

附ulimit 參數說明:

選項 [options] 含義 例子
-H 設置硬資源限制,一旦設置不能增加。 ulimit – Hs 64;限制硬資源,線程棧大小為 64K。
-S 設置軟資源限制,設置后可以增加,但是不能超過硬資源設置。 ulimit – Sn 32;限制軟資源,32 個文件描述符。
-a 顯示當前所有的 limit 信息。 ulimit – a;顯示當前所有的 limit 信息。
-c 最大的 core 文件的大小, 以 blocks 為單位。 ulimit – c unlimited; 對生成的 core 文件的大小不進行限制。
-d 進程最大的數據段的大小,以 Kbytes 為單位。 ulimit -d unlimited;對進程的數據段大小不進行限制。
-f 進程可以創建文件的最大值,以 blocks 為單位。 ulimit – f 2048;限制進程可以創建的最大文件大小為 2048 blocks。
-l 最大可加鎖內存大小,以 Kbytes 為單位。 ulimit – l 32;限制最大可加鎖內存大小為 32 Kbytes。
-m 最大內存大小,以 Kbytes 為單位。 ulimit – m unlimited;對最大內存不進行限制。
-n 可以打開最大文件描述符的數量。 ulimit – n 128;限制最大可以使用 128 個文件描述符。
-p 管道緩沖區的大小,以 Kbytes 為單位。 ulimit – p 512;限制管道緩沖區的大小為 512 Kbytes。
-s 線程棧大小,以 Kbytes 為單位。 ulimit – s 512;限制線程棧的大小為 512 Kbytes。
-t 最大的 CPU 占用時間,以秒為單位。 ulimit – t unlimited;對最大的 CPU 占用時間不進行限制。
-u 用戶最大可用的進程數。 ulimit – u 64;限制用戶最多可以使用 64 個進程。
-v 進程最大可用的虛擬內存,以 Kbytes 為單位。 ulimit – v 200000;限制最大可用的虛擬內存為 200000 Kbytes。

查看某個進程的最大打開文件數和當前打開文件數

先找到該進程的進程號,然后查看/proc/[pid]/limits和fd

/proc/[pid]/limits 顯示當前進程的資源限制

/proc/[pid]/fd 是一個目錄,包含進程打開文件的情況

 

 ps:如果要查看某個進程的線程的詳細信息,/proc/[pid]/task

修改最大限制

用戶級的修改

  • 用戶級修改臨時生效方法:(重啟后失效)
ulimit -SHn 10000

  ulimit 命令分軟限制和硬限制,加-H就是硬限制,加-S就是軟限制。默認顯示的是軟限制,如果運行ulimit 命令修改時沒有加上-H或-S,就是兩個參數一起改變。硬限制就是實際的限制,而軟限制是警告限制,它只會給出警告。

  • 用戶級修改永久有效方式:
vi /etc/security/limits.conf

 

修改配置文件/etc/security/limits.conf,加入:
* soft nofile 65535
* hard nofile 65535
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
* 表示所用的用戶,但有的系統不認, 需要具體的用戶名, 比如:
root soft nofile 65535
root hard nofile 65535
重新登錄驗證,或許reboot后驗證。

 

系統級的修改:

其實上面的修改都是對一個進程打開的文件句柄數量的限制,我們還需要設置系統的總限制才可以。

假如,我們設置進程打開的文件句柄數是1024 ,但是系統總限制才500,所以所有進程最多能打開文件句柄數量500。從這里我們可以看出只設置進程的打開文件句柄的數量是不行的。所以需要修改系統的總限制才可以。

  • 系統級修改臨時生效方式:
echo  655350 > /proc/sys/fs/file-max
  • 系統級修改永久生效方式:
vi /etc/sysctl.conf

加入  fs.file-max=655350

系統級永久生效方式修改后,重啟服務器,才能生效。

  • 查看系統級文件句柄修改,是否生效
sysctl -p

 

參考:https://www.cnblogs.com/sxdcgaq8080/p/11136952.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM