2011-06-27 10:56:47 +0000 2011-06-27 10:56:47 +0000
102
102

Het maximum aantal open file descriptors in Snow Leopard verhogen?

Ik probeer iets te doen dat een groot aantal file descriptors vereist

sudo ulimit -n 12288 is zo hoog als Snow Leopard wil gaan; verder dan dit resulteert in

/usr/bin/ulimit: line 4: ulimit: open files: cannot modify limit: Invalid argument.

Ik wil het getal veel hoger zetten, zeg 100000. Is dat mogelijk?

Antwoorden (4)

95
95
95
2011-06-27 21:17:50 +0000

Het ulimit commando verandert alleen de limieten voor de huidige shell en zijn kinderen, en sudo ulimit creëert een root shell, past zijn limieten aan, en sluit dan af (en heeft dus, voor zover ik kan zien, geen echt effect).
Om 12288 te overschrijden, moet je de kernel’s kern.maxfiles en kern.maxfilesperproc parameters aanpassen, en ook (tenminste volgens deze blog entry , wat een samenvatting is van deze discussie ) een launchd limiet. Je kunt launchctl limit gebruiken om deze allemaal tegelijk aan te passen:

sudo launchctl limit maxfiles 1000000 1000000

Om dit permanent te maken (dus niet te resetten als je herstart), maak je /etc/launchd.conf met daarin:

limit maxfiles 1000000 1000000

Dan kun je ulimit gebruiken (maar dan zonder de sudo) om je proceslimiet aan te passen.

Als dit het niet doet, kan het zijn dat je tegen grootte limieten aanloopt in de kernel. Als uw model het ondersteunt , kan het opstarten van de kernel in 64-bit modus helpen.

42
42
42
2012-12-03 12:07:46 +0000

De volgende oplossingen zouden de meeste oplossingen moeten bieden (en zijn vermeld in volgorde van hun hiërarchie):

echo 'kern.maxfiles=20480' | sudo tee -a /etc/sysctl.conf
echo -e 'limit maxfiles 8192 20480\nlimit maxproc 1000 2000' | sudo tee -a /etc/launchd.conf
echo 'ulimit -n 4096' | sudo tee -a /etc/profile

Opmerkingen:

  1. U moet opnieuw opstarten om deze wijzigingen te laten ingaan.
  2. AFAIK kun je onder OS X niet langer limieten op ‘onbeperkt’ zetten
  3. launchctl maxfiles worden begrensd door sysctl maxfiles, en kan deze dus niet overschrijden
  4. sysctl lijkt kern.maxfilesperproc te erven van launchctl maxfiles
  5. ulimit lijkt zijn ‘open files’ waarde standaard te erven van launchctl
  6. je kunt een aangepaste ulimit instellen in /etc/profile, of ~/.profile ; hoewel dit niet verplicht is heb ik een voorbeeld gegeven
  7. Wees voorzichtig met het instellen van een van deze waarden op een erg hoog getal in vergelijking met hun standaard - de eigenschappen bestaan stabiliteit/veiligheid. Ik heb deze voorbeeld getallen genomen die ik redelijk vind, geschreven op andere websites.
20
20
20
2011-12-10 10:11:12 +0000

Het lijkt erop dat OS X Lion “onbeperkt” niet als waarde toestaat:

% sudo launchctl limit maxfiles 8192 unlimited
Neither the hard nor soft limit for "maxfiles" can be unlimited. Please use a numeric parameter for both.

Het opgeven van numerieke waarden voor zowel de zachte als de harde limiet werkt wel:

% sudo launchctl limit maxfiles 4096 8192
3
3
3
2018-12-21 14:43:27 +0000

Op OS X 10.13.6 werkt dit voor mij:

$ 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