2011-09-28 6 views
24

Sto creando un tester di carico che utilizza libev per creare molte connessioni TCP aperte a un'app su cui sto lavorando. Attualmente le bombe fuori a 256 connessioni, a causa del limite nofiles:Come aumentare i limiti sui socket su osx per il test del carico?

ulimit -n 
256 

posso aumentare questo a 1024 facendo il qui sotto:

ulimit -n 1024 

ma non può aumentare ulteriormente. Idealmente voglio impostarlo 1048576. Si dà il seguente errore:

ulimit: open files: cannot modify limit: Invalid argument 

Come è possibile aumentare l'ulimit ulteriormente su OSX?

risposta

47

(risposta aggiornato per utilizzare -S come molti commentatori hanno suggerito)

$ 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

Odd - l'ho provato sulla mia casa mac (snow leopard) e non ha funzionato, ma sul mio lavoro mac (anche snow leopard) ha funzionato bene. Hmm ... – Chris

+0

Che cosa esattamente non ha funzionato - hai ricevuto messaggi di errore? – Grrrr

+0

Puoi approfondire queste impostazioni? Presumo che 'maxfilesperproc' significhi" per processo "e ha senso che sia inferiore a' maxfiles', ma c'è qualche ragione per cui hai scelto quel numero specifico? –

2

Provare a eseguire come root (ad esempio fare un "sudo -s" prima di eseguire il comando ulimit e il programma).

Si noti che non sono sicuro che le prese 1-milione-più TCP in una sola volta è realisticamente realizzabile (anche se Sono interessato a sentir parlare di ciò che accade quando si prova; ^))

Inoltre, Assegno fuori this.

+0

Bene, le connessioni 1M potrebbero non essere realistiche, ma vedremo fino a che punto posso andare. Semplicemente non voglio essere artificialmente limitato da ulimits. – Chris

2

Ancora una cosa: Limite sulle porte è 65535. Quindi non si può ottenere come molti come si desidera.

Problemi correlati