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

目录:

1、描述编辑

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

2、三个关键值编辑

1)limit中nofile值:

nofile值是单进程的最大打开文件数,也是我们的修改目标;

2)nr_open的值:

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

3)file-max的值:

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

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

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

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

3、修改方法编辑

1)limit中nofile值

修改方法采用直接编辑文件的方式进行。在文件/etc/security/limits.conf中最后添加如下代码(其中50000即为修改的nofile值):

* soft nofile 50000 * hard nofile 50000

退出保存,并执行source命令使文件生效即可。

source /etc/security/limits.conf

2)nr_open和file-max的值

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

在文件/etc/sysctl.conf中加入如下代码:

fs.nr_open=1200000 fs.file-max=200000

退出保存,并执行source命令使文件生效即可。

source /etc/sysctl.conf

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