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.