【4.4】MAC too many open files 问题解决
一、原因:
文件句柄数不够,需要调高ulimit 里面的-n 的值。
二、排查
终端输入下面命令
ulimit -a
得到结果如下
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 256
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 709
virtual memory (kbytes, -v) unlimited
文件数:
ulimit -n
256
一般默认是256
三、解决
- 在用户目录下的.bash_profile中的末尾加入ulimit -n 10240
- 保存后再执行 sudo source ~/.bash_profile 即可
四、可能出现的问题
假如设置的数字特别大,会提示下面的错误
ulimit:124: setrlimit failed: invalid argument
使用下面两个命令看下系统最大数
sysctl kern.maxfiles
sysctl kern.maxfilesperproc
最大连接数限制就是系统所能打开的最大文件数(文件描述符)的限制,分全局和进程两种,相应的命令如下:
- kern.maxfiles 全局限制,也就是系统默认的最大连接数限制
- kern.maxfilesperproc 单个进程默认最大连接数限制
假如系统最大数字不满足你的要求,就修改下系统最大数,命令如下(数字自己设定,但是不要太大,有的电脑系统貌似有限定):
sudo sysctl -w kern.maxfiles=65536
sudo sysctl -w kern.maxfilesperproc=65536
然后再设置 ulimit 即可
说明:设置当前shell能打开的最大文件数ulimit为1048576,该值不能大于kern.maxfilesperproc,否则会提示设置失败。
参考资料
