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

时间:2011-09-28 05:09:10

标签: macos sockets freebsd libev

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

ulimit -n
256

我可以通过以下方式将此值增加到1024:

ulimit -n 1024

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

ulimit: open files: cannot modify limit: Invalid argument

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

3 个答案:

答案 0 :(得分:56)

(答案更新为使用-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

答案 1 :(得分:6)

还有一件事:端口限制为65535.所以你可能没有达到你想要的数量。

答案 2 :(得分:2)

尝试以root身份运行(例如,在运行ulimit命令和程序之前执行“sudo -s”)。

请注意,我不确定一次可以实现100万个以上的TCP套接字(虽然我很有兴趣听到你尝试时会发生什么; ^))

另外,请查看this