2011-09-28 9 views
24

Estoy creando un comprobador de carga que usa libev para crear muchas conexiones tcp abiertas a una aplicación en la que estoy trabajando. Actualmente bombardea a cabo a 256 conexiones, debido al límite nofiles:¿Cómo aumentar los límites en los enchufes en osx para la prueba de carga?

ulimit -n 
256 

que puede aumentar esta cifra a 1024, haciendo el siguiente:

ulimit -n 1024 

pero no puedo aumentar aún más. Lo ideal es que quiero ponerlo en 1048576. Se da el siguiente error:

ulimit: open files: cannot modify limit: Invalid argument 

¿Cómo puedo aumentar el ulimit más en OSX?

Respuesta

47

(respuesta actualizada a utilizar -S como sugirieron varios comentaristas)

$ 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

Extraño - Lo intenté en mi Mac casero (leopardo de las nieves) y no funcionó, pero en mi Mac de trabajo (también leopardo de las nieves) funcionó bien. Hmm ... – Chris

+0

¿Qué exactamente no funcionó? ¿Recibió algún mensaje de error? – Grrrr

+0

¿Puede profundizar en estas configuraciones? Supongo que 'maxfilesperproc' significa" por proceso ", y tiene sentido que sea menor que' maxfiles', pero ¿hay alguna razón por la que elija ese número específico? –

2

Intenta ejecutar como root (por ejemplo, haz un "sudo -s" antes de ejecutar el comando ulimit y tu programa).

Tenga en cuenta que no estoy seguro de que las tomas de 1-millones-más de TCP a la vez es alcanzable de forma realista (aunque estoy interesado en escuchar acerca de lo que sucede cuando usted lo intenta; ^))

También, cheque fuera this.

+0

Bueno, las conexiones de 1M pueden no ser realistas, pero veremos qué tan lejos puedo llegar. Simplemente no quiero ser limitado artificialmente por ulimits. – Chris

2

Una cosa más: Limitación de los puertos es 65535. Por lo tanto usted no puede conseguir tanto como usted desee.

Cuestiones relacionadas