GNU/Linux >> Tutoriels Linux >  >> Linux

Comment fonctionnent les limites des descripteurs de fichiers Linux ?

Vous voulez regarder /proc/sys/fs/file-max à la place

À partir de linux/Documentation/sysctl/fs.txt récent :

fichier-max &fichier-nr :

Le noyau alloue dynamiquement les descripteurs de fichiers, mais pour l'instant il ne les libère pas à nouveau.

La valeur dans file-max indique le nombre maximum de descripteurs de fichiers que le noyau Linux allouera. Lorsque vous recevez de nombreux messages d'erreur concernant le manque de descripteurs de fichiers, vous pouvez augmenter cette limite.

Historiquement, les trois valeurs de file-nr dénotaient le nombre de descripteurs de fichiers alloués, le nombre de descripteurs de fichiers alloués mais inutilisés et le nombre maximum de descripteurs de fichiers. Linux 2.6 signale toujours 0 comme nombre de descripteurs de fichiers libres -- ce n'est pas une erreur, cela signifie simplement que le nombre de descripteurs de fichiers alloués correspond exactement au nombre de descripteurs de fichiers utilisés.

Les tentatives d'allouer plus de descripteurs de fichiers que file-max sont signalées avec printk, recherchez "VFS :file-max limitreached".

EDIT :l'erreur sous-jacente n'est probablement pas le système à court de descripteurs de fichiers globaux, mais simplement votre processus. Il semble probable que le problème soit la limite de taille maximale de select.


Il ne semble pas que vous atteigniez la limite du descripteur de fichier système. Voir cette réponse.

Peut-être que votre processus serveur utilise select et est donc limité à 1024 descripteurs ? Si vous passez à un autre mécanisme, par ex. poll vous ne serez plus limité à 1024 descripteurs.

select() fonctionne avec fd_set s

Ceci provient de la documentation POSIX de select.h :

Les éléments suivants doivent être définis en tant que macro :

FD_SETSIZE

Maximum number of file descriptors in an fd_set structure.

Essayez de trouver ou de sortir FD_SETSIZE sur votre système.

Si vous trouvez que FD_SETSIZE est trop bas pour vous, je préfère essayer de m'éloigner de select que d'essayer d'augmenter FD_SETSIZE ce qui est généralement plus difficile.


Linux
  1. Comment gérer les capacités des fichiers Linux

  2. Comment trouver un fichier sous Linux

  3. Comment créer un swap sous Linux

  4. Comment créer un fichier d'échange sous Linux

  5. Comment monter un fichier iso sous Linux

Comment créer un lien symbolique vers un fichier sous Linux

Comment changer la limite de fichiers ouverts sous Linux

Comment travailler avec des liens durs et des liens souples sous Linux

Comment chiffrer un fichier sous Linux

Comment désactiver Swap sous Linux

Comment utiliser gzip sous Linux ?