35

我正在创建一个负载测试器,它使用 libev 为我正在开发的应用程序创建大量打开的 tcp 连接。由于 nofiles 限制,目前它在 256 个连接处爆炸:

ulimit -n
256

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

ulimit -n 1024

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

ulimit: open files: cannot modify limit: Invalid argument

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

4

3 回答 3

67

(答案已更新为使用 -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
于 2011-09-28T08:18:30.167 回答
6

还有一件事:端口限制是 65535。所以你可能得不到你想要的那么多。

于 2013-11-11T12:31:36.377 回答
2

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

请注意,我不确定一次超过 100 万个 TCP 套接字是否真的可以实现(尽管我很想知道当你尝试它时会发生什么;^))

另外,看看这个

于 2011-09-28T06:41:01.250 回答