linux操作系统中文件句柄数的限制

在生产环境Linux系统中,基本上都需要解除文件句柄数的限制。原因是,Linux的系统默认值为1024,也就是说,一个进程最多可以接受1024个socket连接。这是远远不够的。

文件句柄,也叫文件描述符。在Linux系统中,文件可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(File Descriptor)是内核为了搞笑管理已呗打开的文件所创建的索引,它是一个非负整数(通常是小整数),用于指代被打开的文件。所有的IO系统调用,包括socket的读写调用,都是通过文件描述符完成的。

在Linux下,通过调用ulimit命令,可以看到单个进程能够打开的最大文件句柄数量,这个命令的具体使用方法是:

[root@self ~]# ulimit -n
1024

什么是ulimit命令呢?它是用来显示和修改当前用户进程一些基础限制的命令,-n命令选项用于引用或设置当前的文件句柄数量的限制值。Linux的系统默认值为1024。

默认的数值1024,对于绝大多数应用来说已经足够了,但是对于一些用户基数很大的高并发应用,则是远远不够的。一个高并发的应用,面临的并发连接数往往是十万级、百万级、千万级、甚至像腾讯QQ一样的上亿级。

文件句柄数不够,会导致出现"Socket/File:Can’t open so many files"的错误提示。

对于高并发、高负载的应用,就必须调整这个系统参数,以适应处理并发大量连接的应用场景。可以通过ulimit来设置这个参数。

[root@self ~]# ulimit -n 10000
[root@self ~]# ulimit -n
10000

在上面的命令中,n的设置值越大,可以打开的文件句柄数量就越大,建议以root用户来执行此命令

然后,使用ulimit命令来修改当前用户进程的一些基础限制,仅在当前用户环境有效,直白地说,就是当前的终端工具连接当前shell期间,修改是有效的,一段断开连接,用户退出后,它的数值又便会系统默认的1024了。也就是说,ulimit只能作为临时修改,系统重启后,句柄数量又会恢复默认值。

在这里插入图片描述

如果想永久保存设置,可以修改/etc/rc.local开机启动文件,添加如下内容:

[root@self etc]# vi /etc/rc.local
ulimit -SHn 10000

增加-S和-H两个命令选项。选项-S表示软性极限值,-H表示硬性极限值。硬性极限值是实际的限制,就是最大可以是1万,不能再多了。软性极限是系统警告的极限值,超过这个极限值,内核会发出警告。

[root@self etc]# vi /etc/rc.local
[root@self etc]#
[root@self etc]#
[root@self etc]# ulimit -n
1024
[root@self etc]# source /etc/rc.local
[root@self etc]# ulimit -n
10000
[root@self etc]#

但是再打开一个会话,仍然没有起效

[root@self ~]# ulimit -n
1024
[root@self ~]# source /etc/rc.local
[root@self ~]# ulimit -n
10000

普通用户通过ulimit命令,可将软极限更改成硬极限的最大设置值,如果要更改硬极限,必须拥有root用户权限。

终极解除Linux系统的最大文件打开数量的限制,可以通过编辑Linux的极限配置文件/etc/security/limits.conf来解决,修改此文件,加入如下内容:

[root@self ~]# vi /etc/security/limits.conf
soft nofile 20000
hard nofile 20000

soft nofile表示软性极限,hard nofile表示硬性极限
在使用和安装目前非常火的分布式搜索引擎-ElasticSearch,就必须去修改这个文件,增加最大的文件句柄数的极限值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lang20150928

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值