Comment augmenter les limites sur les sockets sur osx pour les tests de charge?

Je crée un testeur de charge qui utilise libev pour créer beaucoup de connexions tcp ouvertes à une application sur laquelle je travaille. Actuellement, il bombarde à 256 connexions, en raison de la limite nofiles:

ulimit -n
256

Je peux augmenter cela à 1024 en faisant ce qui suit:

ulimit -n 1024

Mais je ne peux pas l'augmenter davantage. Idéalement, je veux le mettre à 1048576. Il donne l'erreur suivante:

ulimit: open files: cannot modify limit: Invalid argument

Comment puis-je augmenter l'ulimit plus loin sur osx?

26
demandé sur Chris 2011-09-28 09:09:10

3 réponses

(réponse mise à jour pour utiliser -s comme plusieurs commentateurs suggéré)

$ 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
51
répondu Grrrr 2013-05-15 11:00:52

Encore une chose: la limite sur les ports est 65535. Si vous ne pouvez pas obtenir autant que vous le souhaitez.

3
répondu Juraj Antas 2013-11-11 12:31:36

Essayez d'exécuter en tant que root (par exemple, faites un "sudo-s" avant d'exécuter la commande ulimit et votre programme).

Notez que je ne suis pas sûr que 1 million de sockets TCP à la fois soit réaliste (bien que je sois intéressant d'entendre ce qui se passe lorsque vous l'essayez;^))

Aussi, découvrez ce.

2
répondu Jeremy Friesner 2017-05-23 11:54:40