Bonjour,
J'ai une application qui tourne sous Linux (Mandrake) et qui ouvre en ecriture plus de 1000 fichiers. A l'execution, j'ai une erreur errno 24, qui survient apparemment lorsque trop de fichiers sont ouverts.
Peut-on modifier en C, par l'application le nombre de fichiers que le systeme peut ouvrir simultanement ?
Sinon comment configurer le systeme pour modifier ce parametrage ?
En faisant sysctl -a sous linux, j'ai pourtant fs.file-max = 32767 !!
Merci
# OPEN_MAX
Posté par Lionel Fournigault . Évalué à -5.
#define OPEN_MAX 2048 /* par exemple */
et reboot le system.
[^] # Re: OPEN_MAX
Posté par LaBienPensanceMaTuer . Évalué à 3.
Extrait de mon /etc/sysctl.conf:
# /etc/sysctl.conf - Configuration file for setting system variables
# See sysctl.conf (5) for information.
#
#kernel.domainname = example.com
#net/ipv4/icmp_echo_ignore_broadcasts=1
Donc tu conseilles d'ajouter un commentaire ?
De plus depuis quand doit on rebooter pour modifier des sysctl ? On est pas sous windows hein ...
Jette donc un oeil à la page de man de sysctl(8) et plus précisément à l'option '-p' .
# Piste à suivre ?
Posté par LaBienPensanceMaTuer . Évalué à 4.
[gco@gc]:~% ulimit -a |grep file
-f: file size (blocks) unlimited
-c: core file size (blocks) 0
-n: file descriptors 1024
-x: file locks unlimited
Visiblement, il s'agit donc des limites utilisateurs de ton système qui semblerait bloquantes. Pour plus d'info sur la commande ulimit, man bash car il s'agit d'un builtin du shell.
La page de man indique que l'utilisateur normal ne peut changer ses limites. En effet:
[gco@gc]:~% ulimit -n 2048
ulimit: value exceeds hard limit
Donc il faut le faire en root, ce qui tout de suite passe mieux:
[root@gc]:/home/gco# ulimit -n 8192
[root@gc]:/home/gco# ulimit -n
8192
Vu qu'il n'est pas très sur de laisser tourner un programme en root sans raison, je te recommande d'agir ainsi:
1/ lancement en root
2/ setrlimit()
3/ setuid(); setgid()
En espérant que cela règle ton problème.
Sinon, si tu veux pas t'emmerder avec tout ça, il y a /etc/security/limits.conf (man 5 limits.conf).
# Trop de fichiers ouverts ...
Posté par Xavier FACQ . Évalué à 6.
Juste par curiosité: tu fais quoi pour avoir plus de 1000 fichiers ouverts en
simultané ? C'est énorme quand meme...
a+
Xavier
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.