ulimit -a
给了我以下信息:
vladon@vldn-dev:~$ 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) 31785
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) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 31785
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
在这里运行的简单异步服务器的实践中,我无法连接比open files
设置中指定的更多的套接字,即超过1024(实际上是1023)。
如果我将其增加到ulimit -n 10000
,那么我打开的数量不能超过10000。
服务器实际上什么也没做,只是接受连接,它可以处理更多,但我不能设置ulimit -n unlimited
或超过10000:
vladon@vldn-dev:~$ ulimit -n 10001
bash: ulimit: open files: cannot modify limit: Operation not permitted
如何完全禁用限制或避免此限制?
答案 0 :(得分:1)
这些限制是(在Linux上)在/etc/security/limits.conf
中配置的。
在这里,您可以增加每个文件的文件描述符数量,例如:添加此行(以root身份):
* hard nofile 20000
然后使用之前使用的ulimit
命令进行验证。
在其他unix上,相应的内核配置工具中通常有一个类似的内核参数。
增加每进程限制可能反过来要求您增加系统范围的文件描述符数。为此,再次在linux上,使用:
# sysctl -w fs.file-max=100000