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

  • Pas de réponse, mais il me semble que limiter le nombre maximum de fichiers ouverts nest pas un moyen déconomiser de la RAM mais des performances dE / S disque. Autoriser un grand nombre de fichiers ouverts implique dautoriser un (potentiellement) grand nombre de fichiers simultanés accès disque. De plus, vous avez probablement une limite globale à léchelle du système ainsi quune limite par processus à ce sujet. Nétant pas un utilisateur Linux, je ne peux ' pas en dire beaucoup plus sur cela, autre que celui ulimit affichera / définira une limite de ressources par processus.
  • Est-ce même un problème pour les disques SSD de toute façon? Il ' est un serveur et je ' ne me soucie pas sil meurt, la société dhébergement va juste le remplacer et jai des sauvegardes. Jai également lu que les sockets réseau peuvent également causer ce problème, je me soucie surtout des performances. Je ' m payer pour le matériel soit si jutilise 100% ou 5% tant que cela améliore les performances ' pourquoi sen soucier? Pour un serveur cloud, je pourrais voir que cela pose un problème, mais pas vraiment pour le matériel dédié
  • Oui, le nombre de sockets ouverts comptera également dans cette limite (ouvrir les descripteurs de fichiers en général). Jai oublié cela. Donc, si la RAM est votre seule préoccupation, je ' ne pense pas que je minquiéterais daugmenter la limite, à moins que cela signifie que quel que soit le service que vous fournissez commence à allouer mémoire supplémentaire liée à chaque socket ouverte. Ce serait quelque chose que vous seul pourriez étudier.

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *