Perché i parametri kern.maxfiles non vengono impostati in /etc/sysctl.conf stick?

4

Ho ricevuto vari "troppi file aperti nel sistema" errori di tipo su Yosemite (10.10.1). La ricerca in giro suggerisce di impostare kern.maxfiles e kern.maxfilesperprocess in /etc/sysctl.conf .

Ho provato questo e kern.maxfilesperprocess resta attivo dopo un riavvio, ma kern.maxfiles no.

% cat /etc/sysctl.conf 
# NB DO NOT COPY AND PASTE THIS INTO YOUR CONFIG FILE - IT DOESN'T WORK
kern.maxfiles=20480 
kern.maxfilesperproc=18000

(riavvio)

% sysctl kern.maxfiles
kern.maxfiles: 12288
% sysctl kern.maxfilesperproc   
kern.maxfilesperproc: 18000

Se lo imposto manualmente sulla riga di comando, funziona, quindi non sembra che io stia superando alcun limite superiore:

% sudo sysctl -w kern.maxfiles=20480 
kern.maxfiles: 12288 -> 20480
% sysctl kern.maxfiles               
kern.maxfiles: 20480

Ho visto avvisi su questi valori sovrascritti in /etc/launchd.conf ma non ho questo file:

% cat /etc/launchd.conf
cat: /etc/launchd.conf: No such file or directory

La ricerca Spotlight non trova altre menzioni di kern.maxfiles , quindi sono fuori dalle idee. Qualche altro suggerimento?

    
posta CupawnTae 22.01.2015 - 13:35
fonte

3 risposte

4

Attraverso una combinazione di avvio sicuro / dettagliato, log della console e google, ho trovato un problema simile che mi ha portato a scoprire uno spazio finale sulla linea maxfiles. La rimozione di questo spazio ha risolto il problema.

Please, double check that the lines in sysctl.conf do not have a trailing space. This seems to be causing a problem with Yosemite whereas it was properly working with previous versions.

Impostazioni corrette (queste possono essere tranquillamente copiate):

kern.maxfiles=20480
kern.maxfilesperproc=18000
    
risposta data 29.01.2015 - 23:51
fonte
7

Pur non rispondendo direttamente alla tua domanda, troverai due soluzioni su superutente :

  1. Per regolare i limiti dei file aperti su tutto il sistema in Mac OS X Yosemite, è necessario creare due file di configurazione. Il primo è un file di lista di proprietà (aka plist) in '/Library/LaunchDaemons/limit.maxfiles.plist' che contiene la seguente configurazione XML:

    <?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>65536</string>
              <string>65536</string>
            </array>
          <key>RunAtLoad</key>
            <true/>
          <key>ServiceIPC</key>
            <false/>
        </dict>
      </plist>
    

    Questo imposterà il limite di file aperti a 65536. Il secondo file di configurazione plist dovrebbe essere memorizzato in /Library/LaunchDaemons/limit.maxproc.plist con il seguente contenuto:

    <?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.maxproc</string>
          <key>ProgramArguments</key>
            <array>
              <string>launchctl</string>
              <string>limit</string>
              <string>maxproc</string>
              <string>2048</string>
              <string>2048</string>
            </array>
          <key>RunAtLoad</key>
            <true />
          <key>ServiceIPC</key>
            <false />
        </dict>
      </plist>
    

    Entrambi i file plist devono essere di proprietà di 'root: wheel' e disporre delle autorizzazioni '-rw-r -r--'. Queste autorizzazioni dovrebbero essere presenti per impostazione predefinita, ma puoi assicurarti che siano attive eseguendo sudo chmod 644 <filename> . Sebbene i passaggi illustrati sopra causino il corretto settaggio dei limiti di file aperti a livello di sistema al riavvio, puoi applicarli manualmente eseguendo launchctl limit .

    Oltre a impostare questi limiti a livello di sistema, ti consigliamo di impostare anche a livello di sessione aggiungendo le seguenti righe al tuo file "bashrc", "bashprofile" o file analogo:

    ulimit -n 65536
    ulimit -u 2048
    

    Come i file plist, il tuo file bashrc o simile dovrebbe avere le autorizzazioni -rw-r--r-- . A questo punto, puoi riavviare il computer e inserire ulimit -n nel tuo terminale. Se il tuo sistema è configurato correttamente, dovresti vedere che maxfiles è stato impostato su 65536.

    Regola i maxfile e amp; limite maxproc quando ne hai bisogno

    Sourced from: link

  2. Modifica del /etc/launchd.conf per molte query di Google e i suggerimenti di SO non sembrano funzionare per me in Yosemite (10.10). Ciò che ha funzionato, dopo numerose combinazioni di cambio / riavvio / test, stava modificando (o creando se non esiste) il file /etc/sysctl.conf .

    Questo è quello che ho dovuto inserire per farlo funzionare

    kern.maxfiles=65536
    kern.maxfilesperproc=65536
    

    Non sono sicuro che "kern.maxfiles" abbia bisogno di essere lì, ma quando ce l'ho dentro da solo ho ancora lo stesso problema, quando ho aggiunto "kern.maxfilesperproc" tutto ha iniziato a funzionare.

Se una o entrambe queste soluzioni funzionano per te, si prega di accreditare i poster originali.

    
risposta data 29.01.2015 - 20:38
fonte
1

La rimozione degli spazi bianchi finali richiede solo un passaggio:

sed -i '~' -e's/[[:space:]]*$//' /etc/sysctl.conf

Il comando precedente salva anche un backup in /etc/sysctl.conf~ .

    
risposta data 18.02.2017 - 01:53
fonte

Leggi altre domande sui tag