Avertissement. D'abord je ne suis pas un SU. Je suis un utilisateur d'ordinateur de niveau intermédiaire avec un peu d'expérience. Je peux écrire du code de base, utiliser des ordinateurs depuis plus de 20 ans. MSDOS, sous Windows au fil des années, je suis sous OS X. J'ai cherché haut et bas pendant quelques semaines maintenant et j'ai donc décidé de faire appel aux gros bras pour demander de l'aide. J'espère que ça vous va.
Tout d'abord je suis sur OS X 10.11.6
.
J'avais un problème avec mon logiciel de sauvegarde Crashplan et je le travaillais avec ses collaborateurs. Tout se résumait à l'erreur:
java.io.FileNotFoundException (Too many open files in system)
J'ai lu et découvert que je devais augmenter le nombre de fichiers ouverts autorisés sur mon système. Je l’ai fait en créant et en modifiant les valeurs des fichiers situés dans /Library/LaunchDaemons
.
J'ai créé deux fichiers: limit.maxfiles.plist
et limit.maxproc.plist
Dans limit.maxfiles.plist
J'ai placé:
<?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>54000</string>
<string>54000</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
et à l'intérieur limit.maxproc.plist
J'ai placé:
<?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>4096</string>
<string>4096</string>
</array>
<key>RunAtLoad</key>
<true />
<key>ServiceIPC</key>
<false />
</dict>
</plist>
J'ai redémarré et vérifié que cela avait eu un effet en exécutant launchctl limit maxfiles
au terminal. Cela a montré que c'était en effet.
J'ai recommencé crashplan et cela a donné la même erreur. J'ai vérifié auprès des responsables du crashplan et ils m'ont dit en gros que c'était le problème, corrigez-le (ce qui est assez juste, je pense).
Donc, j'ai continué à augmenter le nombre de fichiers autorisés jusqu'à ce que je sois arrivé à 900000000). Oui, 900 millions de fichiers sont autorisés. Plus que j'ai sur mon lecteur total. L'erreur persiste toujours. Vérification avec launchctl limit maxfiles
cela montre que c'est en vigueur.
Donc, ça m'a laissé perplexe. J'ai ensuite regardé autour de moi et découvert que je pouvais exécuter une commande comme celle-ci. ulimit -S -n 900000
ce qui donnera à une autre partie du système plus de fichiers à jouer. Je ne sais pas comment ça marche, mais j'ai vérifié ulimit -a
et c'était en effet. Même problème avec Crashplan cependant.
Alors maintenant, je ne sais pas quoi faire, alors je suis venu demander aux personnes qui connaissent mieux que la plupart les systèmes d'exploitation. Quelqu'un peut-il offrir des conseils sur ce que je peux essayer de résoudre?
Merci beaucoup.
while true; do ts=$(date +%H_%M); sudo lsof > open_files_${ts}; wc -l open_files_${ts}; sleep 60; done
va capturer les processus qui ont des fichiers ouverts et en compter le nombre une fois par minute. Si le nombre augmente, vous pouvez voir les différences en différant les résultats, par exemple: diff open_files_13_13 open_files_13_14
Ne vous laissez pas berner, car il y a forcément des différences; mais si un processus se démarque régulièrement, vous pouvez avoir un coupable. Cela créera un nouveau fichier volumineux toutes les minutes jusqu'à ce que vous l'interrompiez: Control-C