打开文件数
在 Linux 中,文件描述符是一种资源,为了控制对资源的合理使用,Linux 会限制所有进程所能打开的文件描述符总数。可以通过下面的命令查看:
通常来说,如果机器的内存越大,那么file-max
的默认值也会越大。当然,也可以手动调大它:
那么要怎样才能知道系统当前打开了多少文件描述符呢?可以用下面的命令:
输出结果的第一个值表示系统当前打开了 704 个文件描述符,在 Linux 2.6 之后,第二个值总是 0,第三个值等于/proc/sys/fs/file-max
的值。
然而fs.file-max
这个参数是系统级别的限制,除此之外,Linux 还会限制某个用户所能打开的文件描述符数量,这个值默认是 1024,可以用下面命令查看:
从上面的命令可以看到,当前用户最多只能打开 1024 个文件描述符。有时在运行高并发服务器的时候,经常会出现文件描述符不够用的错误,这时候就需要调高这个用户所能打开的文件描述符数量了,可以通过下面的命令修改:
上面的命令为www-data
用户设置所能打开的文件描述符数量,其中软限制为 10240,而硬限制为 20480。那么软限制和硬限制的区别是什么呢?其实进程在运行的时候可以修改软限制的值,但要保证这个值不能超过硬限制。然而进程却无法修改硬限制的值,除非以 superuser 的身份运行。