我正在创建一个负载测试程序,它使用libev为我正在处理的应用程序创建大量开放式TCP连接。由于nofiles限制,目前它以256个连接进行轰炸:
ulimit -n
256
我可以通过以下方式将此值增加到1024:
ulimit -n 1024
但我不能进一步增加它。理想情况下,我想将其设置为1048576.它给出以下错误:
ulimit: open files: cannot modify limit: Invalid argument
如何在osx上进一步增加ulimit?
答案 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。