Linux打開文件數量限制

Linux服務器的某些應用程序可能需要更高的打開文件描述符限制,比如:MySQL/MariaDB 服務或 Apache 網絡服務器。

系統級別打開文件限制

  1. 查看當前當前值
# cat /proc/sys/fs/file-max
  1. 運行時臨時修改(root用戶)
# sysctl -w fs.file-max=567962
  1. 永久修改
# vi /etc/sysctl.conf

添加以下行:

fs.file-max=567962

用戶需要注銷并重新登錄才能使更改生效。如果要立即應用限制,可以使用以下命令:

# sysctl -p

用戶級別打開文件限制

  1. 查看
    查看soft limit
$ ulimit -n

查看hard limit

$ ulimit -Hn
  1. 臨時設置
    通過ulimit -Sn設置最大打開文件描述符數的soft limit,注意soft limit必須小于hard limit.
$ ulimit -Sn 160000

通過ulimit -Hn設置最大打開文件描述符數的hard limit.

$ ulimit -Hn 160000

同時設置soft limit和hard limit。對于非root用戶只能設置比原來小的hard limit。

$ ulimit -n 180000
  1. 永久設置
    root權限下,在/etc/security/limits.conf中添加如下兩行,表示所有用戶最大打開文件描述符數的soft limit為102400,hard limit為104800。
* soft nofile 102400
* hard nofile 104800
  1. 檢查系統實際使用了多少文件描述符
cat /proc/sys/fs/file-nr 
9088    0       567962

/proc/sys/fs/nr_open:表示進程可以分配的文件句柄的最大數目。默認值是1024*1024(1048576)。

注意:設置nofile的hard limit還有一點要注意的就是hard limit不能大于/proc/sys/fs/nr_open,假如hard limit大于nr_open,注銷后將無法正常登錄。

總結

  1. 所有進程打開的文件描述符數不能超過/proc/sys/fs/file-max
  2. 單個進程打開的文件描述符數不能超過user limit中nofile的soft limit
  3. nofile的soft limit不能超過其hard limit
  4. nofile的hard limit不能超過/proc/sys/fs/nr_open
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容