Как увеличить ограничения на сокеты на osx для тестирования нагрузки?
Я создаю тестер нагрузки, который использует libev для создания множества открытых подключений tcp к приложению, над которым я работаю. В настоящее время он бомбит 256 соединений из-за предела nofiles:
ulimit -n
256
Я могу увеличить это до 1024, выполнив следующее:
ulimit -n 1024
Но я не могу увеличить его дальше. В идеале я хочу установить его на 1048576. Он дает следующую ошибку:
ulimit: open files: cannot modify limit: Invalid argument
Как я могу увеличить ulimit дальше на osx?
Ответы
Ответ 1
(ответ обновлен, чтобы использовать -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
Ответ 2
Попробуйте запустить как root (например, выполните "sudo -s" перед запуском команды ulimit и вашей программы).
Обратите внимание, что я не уверен, что одномиллионные TCP-сокеты сразу реалистично достижимы (хотя мне интересно узнать о том, что происходит, когда вы пытаетесь это сделать, ^))
Кроме того, ознакомьтесь с этим.
Ответ 3
Еще одно: ограничение по портам - 65535. Таким образом, вы можете не получить столько, сколько хотите.