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?
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
Encore une chose: la limite sur les ports est 65535. Si vous ne pouvez pas obtenir autant que vous le souhaitez.
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.