Linux 下文件描述符
通过 ulimit -n
命令可以查看 linux 系统里打开文件描述符的最大值,一般缺省值是 1024,对一台繁忙的服务器来说,这个值偏小,所以有必要重新设置 linux 系统里打开文件描述符的最大值。那么应该在哪里设置呢?
比如说想把 linux 系统里打开文件描述符的最大值设置为 65535, 命令是 ulimit -n 65535
。需要说明的是这是一个和会话相关的命令,比如说你打开两个命令行终端,分别设置一个不同的值,再查询,会发现彼此不受影响。
那么到底应该在哪里设置 linux 系统里打开文件描述符的最大值呢?
一个最常见的错误就是在 /etc/rc.local
里设置,因为 rc.local
是在最后才被加载的, 所以前面加载的程序,如 /etc/init.d
里的程序都没有机会使用到这个设置值,只有 rc.local
文件里 ulimit -n 65535
声明后面的命令才能使用到这个设置值,因为它们在同一个会话里。
最正确的做法是在 /etc/security/limits.conf
里设置:
* hard nofile 65535
* soft nofile 65535
有很多pam都用到了这个设置:grep -r limit /etc/pam.d
这样设置后所有的程序,所有的会话就都能使用到这个设置值了。