Aujourdhui, mon serveur a planté avec Too many open files in system:
mais je ont déjà des valeurs élevées, quelle est la valeur maximale pour cela?
Jai limpression quil ny a pas de bons résultats sur Google pour cela, expliquant ce qui doit être pris en considération pour définir ces valeurs, ils disent simplement de le définir comme 100k.
Jai un serveur de 32 Go de RAM utilisant seulement 10 Go pour le moment, je suppose que laugmentation des limites de fichiers à des valeurs très élevées augmentera lutilisation de la RAM, y a-t-il une sorte de formule que vous pouvez utiliser pour calculer cela? Comme pour 8 Go de RAM, vous peut ouvrir X nombre de fichiers?
Paramètres actuels:
cat /proc/sys/fs/file-max 100000 ulimit -Hn 1048576 ulimit -Sn 1024
Commentaires
Réponse
Comme le dit Kusalananda, augmenter file-max
naura pas dimpact direct sur lutilisation de la mémoire, mais cela permettra aux processus douvrir plus de descripteurs de fichiers, ce qui aura un effet dentraînement (à la fois du suivi des descriptions de fichiers dans le noyau et de laugmentation de la mémoire utilisation dans les processus utilisant ces descriptions et descripteurs) – les commentaires du noyau suggèrent environ un kilo-octet par fichier pour les données du noyau, et réduiront la valeur par défaut de file-max
(8192) si cela se termine représentant plus de 10% de la mémoire au démarrage du système ( ie il ny a que 80 Mio de RAM). La valeur maximale imposée par le noyau est la valeur maximale qui peut être stockée dans une variable de type long
en C sur votre architecture.
Si vous augmentez file-max
, vous devez également augmenter inode-max
; la documentation du noyau indique que cela devrait être «3 à 4 fois plus grand que la valeur de file-max, car stdin, stdout et les sockets réseau ont également besoin dune structure dinode pour manipulez-les. »
Notez que frapper file-max
entraînera un message du journal du noyau disant« VFS: file-max limit n atteint ”, Avec la valeur appropriée pour n . Si vous ne lavez pas dans vos journaux, soit vous nappuyez pas sur file-max
, soit vous ne filtrez pas trop vos journaux (cest un message de journal de niveau info).
(file-max
ne limite pas les processus avec CAP_SYS_ADMIN
, donc frapper cela narrêtera pas tout.)
Commentaires
- Il ny a donc aucun inconvénient à avoir un nombre arbitrairement élevé? Je ne ' pas voir
inode-max
dans mon système, quoi que ce soit? Ubuntu 16.04 ici. Je veux juste éviter que mon serveur ne se bloque à nouveau, jexécute plusieurs services Web sur ce serveur et je ne me soucie ' de lutilisation des ressources - Linconvénient est que les processus galopants ne seront pas pris en compte par la limite globale des descriptions de fichiers, ils pourraient donc entraîner une pénurie de ressources dautres manières.
ulimit
affichera / définira une limite de ressources par processus.