如何增加osx上的套接字限制以进行负载测试?

Chr*_*ris 29 sockets macos freebsd libev

我正在创建一个负载测试程序,它使用libev为我正在处理的应用程序创建大量开放式TCP连接.由于nofiles限制,目前它以256个连接轰炸:

ulimit -n
256
Run Code Online (Sandbox Code Playgroud)

通过执行以下操作,我可以将此值增加到1024:

ulimit -n 1024
Run Code Online (Sandbox Code Playgroud)

但我不能进一步增加它.理想情况下,我想将其设置为1048576.它给出以下错误:

ulimit: open files: cannot modify limit: Invalid argument
Run Code Online (Sandbox Code Playgroud)

如何在osx上进一步增加ulimit?

Grr*_*rrr 59

(答案更新为使用-S作为几个评论者建议)

$ sysctl kern.maxfiles
kern.maxfiles: 12288
$ sysctl kern.maxfilesperproc
kern.maxfilesperproc: 10240
$ sudo sysctl -w kern.maxfiles=1048600
kern.maxfiles: 12288 -> 1048600
$ sudo sysctl -w kern.maxfilesperproc=1048576
kern.maxfilesperproc: 10240 -> 1048576
$ ulimit -S -n
256
$ ulimit -S -n 1048576
$ ulimit -S -n
1048576
Run Code Online (Sandbox Code Playgroud)

  • 奇怪-我在家用Mac(雪豹)上尝试了一下,但没有用,但是在我的Mac(还有雪豹)上,效果很好。嗯... (2认同)
  • 另外,我不得不使用`ulimit -S -n 2048`来看它的变化. (2认同)

Jur*_*tas 6

还有一件事:端口限制为65535。因此,您获得的数量可能不尽如人意。