简单修改Linux系统文件描述符限制(Too many open files)

在Linux下实现高并发服务器,默认的文件描述符限制会导致socket的EMFILE(24)错误,该错误描述为"Too many open files"。

查看当前所有限制:
# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 15029
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

单独查看文件描述符:
# ulimit -n
1024

当前终端环境的fd限制修改,仅限于本终端:
# ulimit -n 65535
# ulimit -n  //查看设置后的值

查看系统最大文件描述符:
# cat /proc/sys/fs/file-max
190948

查看系统当前使用的描述符:
# cat /proc/sys/fs/file-nr
5440    0       190948

永久生效的设置方法:
在/etc/profile文件后,添加"ulimit -n 65535" (填入你想要的值,该值要小于系统最大限制file-max)
懒人命令:
# echo 'ulimit -n 65535'  >> /etc/profile; source /etc/profile

你可能感兴趣的:(Linux)