Nous avons récemment commencé à tester en charge notre application et avons constaté qu’elle manquait de descripteurs de fichier au bout de 24 heures environ.
Nous utilisons RHEL 5 sur un Dell 1955:
Processeur: 2 x Dual Core 2,66 GHz 4 Mo de RAM 5150 / 1333FSB: 8 Go de RAM Disque dur: 2 x 160 Go de disques durs SATA 2,5 "
J'ai vérifié la limite du descripteur de fichier et celle-ci a été fixée à 1024. Étant donné que notre application pourrait potentiellement avoir environ 1 000 connexions entrantes ainsi que 1 000 connexions sortantes, cela semble assez faible. Sans parler des fichiers réels qui doivent être ouverts.
Ma première idée était simplement d’augmenter le paramètre ulimit -n de quelques ordres de grandeur, puis de relancer le test, mais je voulais connaître les conséquences possibles de la définition de cette variable trop élevée.
Existe-t-il des pratiques recommandées pour définir cette option autrement que de déterminer le nombre de descripteurs de fichier que notre logiciel peut théoriquement ouvrir?
ulimit
limite n'est pas par utilisateur, mais par processus! Voir unix.stackexchange.com/questions/55319/… Et lefs.file-max
paramètre est pour le serveur dans son ensemble (donc tous les processus ensemble).Tu pourrais toujours juste
Pendant la situation de «forte charge», voyez combien de descripteurs de fichiers sont utilisés.
Au maximum, cela dépend de ce que vous faites.
la source
8288 0 793377
!Si les descripteurs de fichier sont des sockets TCP, etc., vous risquez d’utiliser une grande quantité de mémoire pour les tampons de socket et autres objets du noyau; cette mémoire ne sera pas échangeable.
Mais sinon, non, en principe, il ne devrait pas y avoir de problème. Consultez la documentation du noyau pour essayer de connaître la quantité de mémoire qu'il utilisera et / ou testez-la.
Nous exécutons des serveurs de base de données avec environ 10 000 descripteurs de fichier ouverts (principalement sur des fichiers de disque réels) sans problème majeur, mais ils sont en 64 bits et disposent de beaucoup de RAM.
Le paramètre ulimit est défini par processus, mais il existe également une limite système (32k par défaut, je pense)
la source
Je ne suis personnellement pas au courant de meilleures pratiques. C'est un peu subjectif en fonction de la fonction du système.
Rappelez-vous que 1024 que vous voyez est une limite par utilisateur et non une limite à l'échelle du système. Considérez le nombre d'applications que vous exécutez sur ce système. Est-ce le seul? L'utilisateur qui exécute cette application fait-il autre chose? (IE, avez-vous des humains utilisant ce compte pour vous connecter et exécuter des scripts potentiellement fugitifs?)
Étant donné que la boîte de dialogue n’exécute que cette seule application et que le compte exécutant ladite application n’est utilisé qu’à cette fin, je n’ai aucun mal à augmenter votre limite, comme vous le suggérez. Si c'est une équipe de développement interne, je demanderais leur avis. S'ils proviennent d'un fournisseur tiers, ils peuvent avoir des exigences ou des recommandations spécifiques.
la source
Cela me semble répondre à l’une de ces questions par "le tester dans un environnement de développement". Je me souviens que, il y a des années, Sun était nerveux lorsque vous vous êtes planté, mais pas si nerveux. Sa limite à l'époque était également de 1024, donc je suis un peu surpris de voir que c'est la même chose maintenant pour Linux, il semble que cela devrait être plus élevé.
J'ai trouvé le lien suivant éducatif lorsque j'ai cherché sur Google les réponses à votre question: http://www.netadmintools.com/art295.html
Et celui-ci aussi: https://stackoverflow.com/questions/1212925/on-linux-set-maximum-open-files-to-unlimited-possible
la source