Il limite di file aperti non funziona come in precedenza in OSX Yosemite [duplicato]


22

Ho appena aggiornato Mac OS X a Yosemite e ora alcune applicazioni non funzionano (IBM DB2). So che devo impostare Open Files su 65000, tuttavia il comando non funziona.

Andress-MBP:~ root# ulimit -n 12288
Andress-MBP:~ root# ulimit -n 12289
-sh: ulimit: open files: cannot modify limit: Invalid argument

Perché sta succedendo e come posso correggere il problema?

Risposte:


25

Sembra che ci sia un metodo completamente diverso per modificare il limite di file aperti per ogni versione di OS X!

Per OS X Sierra (10.12.X) devi:

  1. In /Library/LaunchDaemonscrea un file chiamato limit.maxfiles.pliste incolla quanto segue (sentiti libero di cambiare i due numeri, che sono rispettivamente i limiti soft e hard):

    <?xml version="1.0" encoding="UTF-8"?>  
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"  
              "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">  
        <dict>
          <key>Label</key>
          <string>limit.maxfiles</string>
          <key>ProgramArguments</key>
          <array>
            <string>launchctl</string>
            <string>limit</string>
            <string>maxfiles</string>
            <string>64000</string>
            <string>524288</string>
          </array>
          <key>RunAtLoad</key>
          <true/>
          <key>ServiceIPC</key>
          <false/>
        </dict>
      </plist> 
    
  2. Cambia il proprietario del tuo nuovo file:

    sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
    
  3. Carica queste nuove impostazioni:

    sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
    
  4. Infine, controlla che i limiti siano corretti:

    launchctl limit maxfiles
    

7
In attesa di una nuova risposta per macOS 10.13! :)
NSTJ,

1
Il processo non ha funzionato per me fino al riavvio. Grazie! mi ha aiutato molto
user2773086

Questa sintesi dice anche che la modifica di questi file è il modo di aggiornare questo limite di file aperti per Sierra gist.github.com/tombigel/d503800a282fcadbee14b537735d202c
Devin G Rhode

1
Il riavvio è necessario per il funzionamento dei limiti (anche se il passaggio 4 mostra i valori aggiornati)
trinto

21

Vedo che hai posto questa domanda dappertutto.

C'è un limite del kernel che devi affrontare, kern.maxfiles che è il limite del kernel e non può essere superato quando si imposta ulimit.

Vedi la pagina del blog Krypted Maximum Files in Mac OS X per una descrizione su come manipolare kern.maxifiles usando sysctl.

Non ho ancora caricato Yosemite sul mio Mac. Le sysctl -w kern.maxfiles=65000opere su Mavericks, che ha gli stessi kern.maxfiles = 12288 limite di default.

Ho controllato il mio VM OS X 10.6.8 e aveva lo stesso limite che pone la domanda su come funzionava in precedenza prima della versione di OS X.

Esiste una condivisione diapositive ( DB2 per Mac OS X Installazione e configurazione di DB2 per Mac OS X ) che mostra i limiti consigliati per l'utilizzo di DB2, vedere Aumentare i parametri di sistema a pagina 7.

Aumenta i parametri di sistema

Apri /etc/sysctl.conf (o crealo se non esiste già) e inserisci le seguenti impostazioni. Queste impostazioni aumentano alcune impostazioni per la memoria condivisa e i limiti dell'utente di cui DB2 ha bisogno per funzionare su Mac.

Aggiungi quanto segue a /etc/sysctl.conf
kern.sysv.shmmax = 1073741824
kern.sysv.shmmin = 1
kern.sysv.shmmni = 4096
kern.sysv.shmseg = 32
kern.sysv.shmall = 1179648
kern.maxfilesperproc = 65536
kern.maxfiles = 65536

Sembra che tu abbia perso il /etc/sysctl.conffile durante l'aggiornamento.


In realtà, ho installato DB2 molto tempo fa e ha funzionato. Poi ho aggiornato a Maverick l'anno scorso, senza alcun problema. E oggi, ho aggiornato a Yosemite e questo problema appare. Non riesco ad avviare il mio DB2 già installato.
AngocA,

Un'altra cosa è che il mio sysctl.conf è identico al file che hai inserito nel tuo post. Ho creato la prima volta che ho installato DB2 (un anno fa), ma non l'ho toccato per la migrazione.
AngocA,

Il problema riguardava alcuni spazi vuoti in quel file: ibm.com/developerworks/community/forums/html/…
AngocA,

1
Spazi finali, che avrebbe pensato. Apple dovrebbe avere alcuni dei migliori programmatori al mondo.
user187561

@ user187561 sysctl(8)viene da BSD.
Ha disegnato Stephens il

12

In Mac OS 10.10 sembra che l'impostazione ulimit non possa superare l'impostazione del limite launchctl.

Quindi dovresti prima eseguire i file massimi di launchctl limit nel terminale per ottenere l'impostazione corrente:

launchctl limit maxfiles
maxfiles    256            unlimited 

Quindi nel mio caso il limite soft è 256, il limite hard è illimitato. E poi se voglio impostare il limite soft su 512:

sudo launchctl limit maxfiles 512 unlimited

L'utilizzo dettagliato di launchctl per l'impostazione dei limiti è disponibile qui: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/launchctl.1.html


'launchctl limit maxfiles 512 unlimited' sembra impostare i miei limiti (soft, hard) su (512,10240) su Yosemite 10.10.5 il 30/09/2015
Dave X

2
"maxfile limite di launchctl illimitato illimitato; maxfile di limite launchctl" indica che 10240 è il limite massimo che può essere inserito. L'uso silenzioso di numeri più grandi non riesce, lasciando l'impostazione come prima.
Dave X,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.