历史版本4 :Linux最大打开文件数 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

在使用 Linux 服务器部署 FineBI 时,有时会出现报错 too many open files 。

此问题是因为 Linux 系统本身默认系统应用最大打开的文件数为 1024,BI 执行时会读取保存在本地的数据,有些情况 BI 打开的文件数会超过这个限制,因此需要手动改掉linux系统的最大打开文件数。该修改在不同情况下会涉及到3个关键值。 

2. 参数说明编辑

2.1 相关参数说明

1)nofile 

nofile 值是指单进程的最大打开文件数。

2)nr_open 

该值是指单个进程可分配的最大文件数,通常默认值为1024*1024=1048576;

3)file-max 

该值是系统内核一共可以打开的最大值,默认值是185745;

2.2 修改策略

一般情况下,nofile 的值不允许超过 nr_open 和 file-max 的值。因此在修改 nofile 时要考虑是否超过以上两个值的情况:

  • 当要修改的「nofile」值(最大打开文件数)未超过「nr_open」和「file-max」两个值时,直接修改「nofile」值即可;

  • 当要修改的「nofile」值(最大打开文件数)超过「nr_open」和「file-max」两个值时,不仅要修改「nofile」的值,还要修改「nr_open」和「file-max」的值满足「大于nofile」值。

3. 修改方法编辑

3.1 查看相关参数大小

查看修改前参数的大小,如下图所示:

1599728103695186.png

命令如下所示:

cat /proc/sys/fs/nr_open
cat /proc/sys/fs/file-max
ulimit -n

3.2 修改 limit 中 nofile 值

当要修改的「nofile」值(最大打开文件数)未超过「nr_open」和「file-max」两个值时,直接修改「nofile」值即可。

修改方法采用直接编辑文件的方式,操作代码如下所示:(其中 50000 即为修改的 nofile 值)

vi /etc/security/limits.conf  #进入文件编辑界面
* soft nofile 50000 
* hard nofile 50000

退出保存。

3.3 nr_open 和 file-max 值

当要修改的最大打开文件数超过 nr_open 和 file-max 时,就需要改动该值,将该值提高。其修改方式如下:

在文件/proc/sys/fs/nr_open
中加入如下代码:(1200000 为修改的参数值)

fs.nr_open=1200000

在文件 /proc/sys/fs/file-max 中插入如下代码:

fs.file-max=200000

退出保存。

注:Linux的内核参数 nr_open 只有在内核版本是 2.6.25 之后的版本才可设置。查看内核版本使用命令“uname -a”。

然后再修改 nofile 值 ,请参见 3.2 节。