ab 压测的时候,慢慢调大并发数,当设置 300 并发时,ab 报错:

socket: Too many open files (24)

于是使用 ulimit -a 命令查看配置:

MCDTONY:~ cn-tonylu$ 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) 2784
virtual memory          (kbytes, -v) unlimited

发现 open files 数量只有 256 个,显然不能满足我在本地进行压测的需求。

于是手动修改之,执行 ulimit 命令发现又报错

sudo ulimit -n 65535
-bash: ulimit: open files: cannot modify limit: Invalid argument

macOS 果然跟 Linux 不一样。。。

网上搜了一下,找到一个解决方案:

echo kern.maxfiles=65535 | sudo tee -a /etc/sysctl.conf

执行效果:

MCDTONY:~ cn-tonylu$ echo kern.maxfiles=65535 | sudo tee -a /etc/sysctl.conf
Password:
kern.maxfiles=65535

然后再执行 ulimit -n 2000 即可。

再次使用 ulimit -a 命令查看,发现 open files 数量变为 2000 了。