Как увеличить лимиты на сокеты на osx для нагрузочного тестирования? - PullRequest
29 голосов
/ 28 сентября 2011

Я создаю тестер нагрузки, который использует libev для создания множества открытых tcp-соединений с приложением, над которым я работаю.В настоящее время он раздает 256 соединений из-за ограничения по nofiles:

ulimit -n
256

Я могу увеличить это значение до 1024, выполнив следующее:

ulimit -n 1024

Но я не могу увеличить его дальше.В идеале я хочу установить его на 1048576. Это дает следующую ошибку:

ulimit: open files: cannot modify limit: Invalid argument

Как я могу увеличить ulimit дальше на osx?

Ответы [ 3 ]

56 голосов
/ 28 сентября 2011

(ответ обновлен для использования -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
6 голосов
/ 11 ноября 2013

Еще одна вещь: ограничение на порты составляет 65535. Таким образом, вы можете получить не столько, сколько хотите.

2 голосов
/ 28 сентября 2011

Попробуйте запустить от имени пользователя root (например, выполните sudo -s перед запуском команды ulimit и вашей программы).

Обратите внимание, что я не уверен, что более одного миллиона TCP-сокетов одновременно реально достижимо (хотя мне интересно узнать, что происходит, когда вы пытаетесь это сделать; ^))

Кроме того, проверьте это .

...