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