web-dev-qa-db-fra.com

Comment augmenter les limites sur les sockets sur OSX pour des 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 bombe à 256 connexions, en raison de la limite NOFILES:

ulimit -n
256

Je peux augmenter cela à 1024 en faisant ci-dessous:

ulimit -n 1024

Mais je ne peux pas l'augmenter plus loin. Idéalement, je veux la définir à 1048576. Il donne l'erreur suivante:

ulimit: open files: cannot modify limit: Invalid argument

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

29
Chris

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

$ 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
57
Grrrr

Une dernière chose: la limite des ports est de 65535. Vous ne pouvez donc pas en avoir autant que vous le souhaitez.

6
Juraj Antas

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

Notez que je ne suis pas sûr que 1-million-plus-plus TCP sockets à la fois réalisable est réalisable (bien que je suis intéressant dans l'entendre sur ce qui se passe lorsque vous l'essayez; ^)))

Vérifiez également Ceci .

2
Jeremy Friesner