2011-09-28 13 views
24

我创建了一个使用libev创建大量开放tcp连接到我正在工作的应用程序的负载测试程序。目前,它的炸弹在出去256个连接,由于NOFILES限制:如何增加osx上的套接字上的负载测试限制?

ulimit -n 
256 

我可以做下面增加这1024:

ulimit -n 1024 

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

ulimit: open files: cannot modify limit: Invalid argument 

我怎样才能提高的ulimit进一步在OSX?

回答

47

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

奇怪 - 我试图在我家的Mac(雪豹),它没有工作,但在我的工作mac(也是雪豹)它工作正常。嗯...... – Chris

+0

什么都不起作用 - 你有没有收到任何错误信息? – Grrrr

+0

你能详细说明这些设置吗?我假设'maxfilesperproc'的意思是“每个进程”,它有意义的是它必须小于'maxfiles',但是你有什么理由选择这个特定的数字? –

2

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

请注意,我不知道这一次1 000万美元以上的TCP套接字是现实可行的(虽然我听说发生了什么有趣的是,当你尝试; ^))

此外,检查出this

+0

那么,1M的连接可能不太现实,但我们会看到我能走多远。只是不想被ulimits人为限制。 – Chris

2

一件事:在端口限制为65535。所以,你可能并不像你想尽可能多的获得。

相关问题