Chris
Chris

Reputation: 40641

How to increase limits on sockets on osx for load testing?

I'm creating a load tester that uses libev to create lots of open tcp connections to an app i'm working on. Currently it bombs out at 256 connections, due to the nofiles limit:

ulimit -n
256

I can increase this to 1024 by doing the below:

ulimit -n 1024

But i cannot increase it further. Ideally i want to set it to 1048576. It gives the following error:

ulimit: open files: cannot modify limit: Invalid argument

How can i increase the ulimit further on osx?

Upvotes: 41

Views: 33756

Answers (3)

Juraj Antas
Juraj Antas

Reputation: 2712

One more thing: Limit on ports is 65535. So you may not get as many as you want to.

Upvotes: 6

Grrrr
Grrrr

Reputation: 2536

(answer updated to use -S as several commenters suggested)

$ 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

Upvotes: 72

Jeremy Friesner
Jeremy Friesner

Reputation: 73161

Try running as root (e.g. do a "sudo -s" before running the ulimit command and your program).

Note that I'm not sure that 1-million-plus TCP sockets at once is realistically achievable (although I'm interesting in hearing about what happens when you try it ;^))

Also, check out this.

Upvotes: 2

Related Questions