在Linux下实现高并发服务器,默认的文件描述符限制会导致socket的EMFILE(24)错误,该错误描述为"Too many open files"。
查看当前所有限制:
# ulimit -a
单独查看文件描述符:
# 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
查看当前所有限制:
# 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