Libevを使用して、作業中のアプリへの多数のオープンTCP接続を作成するロードテスターを作成しています。現在、nofilesの制限により、256接続で爆破しています。
ulimit -n
256
以下を実行することで、これを1024に増やすことができます。
ulimit -n 1024
しかし、それ以上増やすことはできません。理想的には、1048576に設定します。次のエラーが発生します。
ulimit: open files: cannot modify limit: Invalid argument
OSXでulimitをさらに増やすにはどうすればよいですか?
(回答者はいくつかのコメンターが示唆したように-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
もう1つ:ポートの制限は65535です。そのため、必要な数を取得できない場合があります。
Rootで実行してみてください(たとえば、ulimitコマンドとプログラムを実行する前に「Sudo -s」を実行します)。
100万以上のTCPソケットが一度に現実的に実現可能であるかどうかはわかりません(ただし、試してみると何が起こるか聞いて面白いですが; ^))
また、 this も確認してください。