返回顶部

Linux 打开文件限制及文件描述符限制 ulimit

 Linux 打开文件限制及文件描述符限制 ulimit

在 Linux中可以更改打开文件的最大数量。使用ulimit命令,能够控制可用于 shell 或由它启动的进程的资源。

fs.file-max  系统所有进程一共可以打开的文件数量

 fs.nr_open    单个进程可分配的最大文件数

#sysctl -a |grep fs.file-max
fs.file-max = 52363590

# sysctl -a |grep nr_open
fs.nr_open = 1048576

 

# cat /proc/sys/fs/nr_open
1048576

# cat /proc/sys/fs/file-max
52363590

 

Linux 中检查硬限制

# ulimit -Hn
65535

 Linux 中的软限制

# ulimit -Sn
65535

报错信息

涉及系统模块为:Pam_limits.so模块 

“I/O exception (java.net.SocketException) caught when processing request: Too many open files”

 

系统范围的文件描述符限制

设置全局限制

临时将打开文件限制增加到 500000,fs.file-max  系统所有进程一共可以打开的文件数量
 sysctl -w fs.file-max=500000

临时配置生效

# ulimit -Sn 65535
# ulimit -Hn 65535



持久配置,用户需要注销并重新登录才能使更改生效,立即应用限制使用sysctl -p
# vi /etc/sysctl.conf
fs.file-max=500000
# sysctl -p

用户级别打开文件限制

对每个用户应用限制,nr_open设置的最大有效值为1024000,修改完要重新登录,不然session的句柄数不会生效。

/etc/security/limits.conf,这个文件可以配置用户的硬配置和软配置,硬配置是个上限。超出上限的修改就会出不允许的操作这样的错误

 

  • nproc 操作系统级别对每个用户创建的进程数的限制
  • noflie 每个进程可以打开的文件数的限制
  • Hard  严格设定,必定不能超过这个设定的值
  • Soft   警告的设定,可以超过这个设定值但会有告警信息,要小于hard

 

# vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

#vi /etc/security/limits.d/20-nproc.conf
* soft nproc 20000
* hard nproc 20000
root soft nproc 65535
root hard nproc 65535

#修改/etc/pam.d/login,增加:
#vi
/etc/pam.d/login
session required pam_limits.so
#nginx 配置
如果是nginx,还需要注意这里,否则还是会报错,在/lib/systemd/system/nginx.service[Service]段,增加:LimitNOFILE=100000

验证

# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 2062669
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65535
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 20000
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

# ulimit -n
65535
# ulimit -u
20000

 

posted @ 2022-03-04 09:38  九尾cat  阅读(371)  评论(0编辑  收藏  举报