8 votes

Pourquoi le paramètre kern.maxfiles dans /etc/sysctl.conf ne reste-t-il pas enregistré ?

Je reçois divers erreurs de type "trop de fichiers ouverts dans le système" sur Yosemite (10.10.1). En cherchant autour, il semble qu'il faut définir kern.maxfiles et kern.maxfilesperprocess dans /etc/sysctl.conf.

J'ai essayé ceci, et kern.maxfilesperprocess reste après un redémarrage, mais kern.maxfiles ne reste pas.

% cat /etc/sysctl.conf 
# NB NE COPIEZ ET COLLEZ PAS CECI DANS VOTRE FICHIER DE CONFIGURATION - CA NE MARCHE PAS
kern.maxfiles=20480 
kern.maxfilesperproc=18000

(redémarrage)

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

Si je le définis manuellement en ligne de commande, ça fonctionne, donc je ne semble pas dépasser une limite maximale :

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

J'ai vu des avertissements sur ces valeurs étant écrasées dans /etc/launchd.conf mais je n'ai pas ce fichier :

% cat /etc/launchd.conf
cat: /etc/launchd.conf: Aucun fichier ou dossier de ce type

La recherche Spotlight ne trouve aucune autre mention de kern.maxfiles, donc je suis à court d'idées. Des suggestions ?

11voto

klanomath Points 63400

Bien que ne répondant pas directement à votre question, vous trouverez deux solutions à superutilisateur :

  1. Pour ajuster les limites des fichiers ouverts sur l'ensemble du système dans Mac OS X Yosemite, vous devez créer deux fichiers de configuration. Le premier est un fichier de liste de propriétés (également appelé fichier plist) dans '/Library/LaunchDaemons/limit.maxfiles.plist' qui contient la configuration XML suivante :

          Label
            limit.maxfiles
          ProgramArguments
    
              launchctl
              limit
              maxfiles
              65536
              65536
    
          RunAtLoad
    
          ServiceIPC

    Cela ajustera la limite des fichiers ouverts à 65536. Le deuxième fichier de configuration plist doit être stocké dans /Library/LaunchDaemons/limit.maxproc.plist avec le contenu suivant :

          Label
            limit.maxproc
          ProgramArguments
    
              launchctl
              limit
              maxproc
              2048
              2048
    
          RunAtLoad
    
          ServiceIPC

    Les deux fichiers plist doivent être possédés par 'root:wheel' et avoir des autorisations '-rw-r--r--'. Ces autorisations devraient être en place par défaut, mais vous pouvez vous assurer qu'elles sont en place en exécutant sudo chmod 644 . Alors que les étapes expliquées ci-dessus provoqueront le réglage correct des limites des fichiers ouverts à l'échelle du système lors du redémarrage, vous pouvez les appliquer manuellement en exécutant launchctl limit.

    En plus d'ajuster ces limites au niveau du système, nous vous recommandons de les définir également au niveau de la session en ajoutant les lignes suivantes à votre 'bashrc', 'bashprofile' ou fichier similaire :

    ulimit -n 65536
    ulimit -u 2048

    Tout comme les fichiers plist, votre bashrc ou fichier similaire devrait avoir des autorisations -rw-r--r--. À ce stade, vous pouvez redémarrer votre ordinateur et taper ulimit -n dans votre terminal. Si votre système est configuré correctement, vous devriez constater que maxfiles a été réglé à 65536.

    Ajustez la limite maxfiles & maxproc comme vous en avez besoin

    Source : http://docs.basho.com/riak/latest/ops/tuning/open-files-limit/

  2. Modifier le /etc/launchd.conf selon de nombreuses requêtes sur Google et des suggestions de SO n'a pas semblé fonctionner pour moi sous Yosemite (10.10). Ce qui a fini par fonctionner, après de nombreuses combinaisons de changements/redémarrages/tests, a été de modifier (ou de créer s'il n'existe pas) le fichier /etc/sysctl.conf.

    Voici ce que j'ai dû mettre pour que cela fonctionne

    kern.maxfiles=65536
    kern.maxfilesperproc=65536

    Je ne suis pas sûr que 'kern.maxfiles' doit y être, mais lorsque je l'avais mis seul, j'avais toujours le même problème, lorsque j'ai ajouté le 'kern.maxfilesperproc', tout a commencé à fonctionner.

Si l'une ou l'autre de ces solutions fonctionne pour vous, veuillez créditer les auteurs originaux.

5voto

Mars Points 203

À travers une combinaison de démarrage sûr/verbeux, de console log et de recherche sur Google, j'ai trouvé un problème similaire qui m'a conduit à découvrir un espace final sur la ligne maxfiles. En enlevant cet espace, le problème a été résolu.

Veuillez vérifier que les lignes dans sysctl.conf n'ont pas d'espace final. Cela semble causer un problème avec Yosemite alors que cela fonctionnait correctement avec les versions précédentes.

Paramètres corrigés (ceux-ci peuvent être copiés en toute sécurité) :

kern.maxfiles=20480
kern.maxfilesperproc=18000

1voto

sanmai Points 61

Supprimer les espaces insécables en fin de ligne ne prend qu'une seule étape :

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

La commande ci-dessus sauvegarde également une copie de sécurité à /etc/sysctl.conf~.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X