warning: fork: Too many open files

warning: fork: Too many open files - Logiciels - Linux et OS Alternatifs

Marsh Posté le 29-06-2004 à 23:43:31    

Bonsoir,  
 
Mon serveur de mail postfix merde pas mal ces derniers temps en refusant d'envoyant pas mal de mails, et en envoyant quand meme quelques-uns.
Dans le fichier mail.warn, je trouve fréquemment cette erreur:
 

Citation :

Jun 29 23:11:57 ns1 postfix/sendmail[22412]: warning: fork: Too many open files
Jun 29 23:11:59 ns1 postfix/sendmail[1345]: warning: fork: Resource temporarily unavailable


 
Si oui, que faut t'il faire? De quels fichiers ouverts parle t'il? Faut t'il augmenter la limite d'ouverture de fichiers dans le kernel? faire autre chose?  
A vrai dire, je ne sais pas tellement de quel coté chercher la solution
 
Je vous remercie  
Bonne soirée

Reply

Marsh Posté le 29-06-2004 à 23:43:31   

Reply

Marsh Posté le 30-06-2004 à 02:22:56    

up

Reply

Marsh Posté le 30-06-2004 à 13:18:07    

up

Reply

Marsh Posté le 30-06-2004 à 14:17:56    

man ulimit ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 30-06-2004 à 14:38:32    

DESCRIPTION
       Warning:  This  routine is obsolete. The include file is no longer provided by glibc.  Use getrlimit(2),
       setrlimit(2) and sysconf(3) instead.  For the shell command ulimit, see bash(1).
 
       The ulimit call will get or set some limit for the current process.  The cmd argument can  have  one  of
       the following values.
 
       UL_GETFSIZE
              Return the limit on the size of a file, in units of 512 bytes.
 
       UL_SETFSIZE
              Set the limit on the size of a file.
 
       3      (Not implemented for Linux.)  Return the maximum possible address of the data segment.
 
       4      (Implemented  but  no  symbolic  constant provided.)  Return the maximum number of files that the
              calling process can open.
 
RETURN VALUE
       On success, ulimit returns a nonnegative value.  On error, -1 is returned, and errno  is  set  appropri?
       ately.
 
ERRORS
       EPERM  A non-root process tried to increase a limit.
 
CONFORMING TO
       SVID.


 
Mais ca ne me donne pas tellement d'infos :??: Quelle valeur mettre?

Reply

Marsh Posté le 30-06-2004 à 17:01:40    

sous une RH/mdk j'aurais :
- jeté un oeil à /etc/security/limits.conf  
- et aussi à /proc/sys/fs/file-max et /etc/sysctl.conf pour modifier la valeur de /proc/sys/fs/file-max


Message édité par Dark_Schneider le 30-06-2004 à 17:01:58

---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 30-06-2004 à 17:02:11    

c'est une debian :D

Reply

Marsh Posté le 30-06-2004 à 17:03:17    

cherche et voit si il y a des correspondances


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 30-06-2004 à 17:05:01    

Les fichiers existent néanmoins:
 

# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#        - an user name
#        - a group name, with @group syntax
#        - the wildcard *, for default entry
#
#<type> can have the two values:
#        - "soft" for enforcing the soft limits
#        - "hard" for enforcing hard limits
#
#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open files
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes
#        - as - address space limit
#        - maxlogins - max number of logins for this user
#        - priority - the priority to run user process with
#
#<domain>      <type>  <item>         <value>
#
 
#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4
 
# End of file


 

cat /proc/sys/fs/file-max
209708


 

cat /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


 
Puis-je augmenter les valaurs comme je veux? les mettre très grande?

Reply

Marsh Posté le 30-06-2004 à 17:08:34    

ne bourrine pas trop quand même ...
 
tu es déjà à 209708 !!! moi je suis à 59199 ( mais ce n'est pas un serveur mais mon serveur de fichier doit avoir la même valeur ).
 
ce n'est pas normal que tu ais besoin de tant de fichiers ouverts ...
 
combien de clients/maisl ton serveur postfix traite-t-il ?
 
si ton serveur postfix tourne sous le nom de l'utilisateur postfix, met une valeur plus importante dans /etc/security/limits.conf


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 30-06-2004 à 17:08:34   

Reply

Marsh Posté le 30-06-2004 à 17:11:50    

une ligne comme ca dans etc/security/limits.conf  
 
postfix    nofile    300000
 
Pour tester, il n'y a que ca à faire, pas à mettre à jour qqcchose d'autre?

Reply

Marsh Posté le 30-06-2004 à 17:14:07    

je pense que spécifier une valeur pour l'utilisateur ( limits.conf ) > valeur du noyau ( /proc/sys/file-max ) ne sert à rien


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 30-06-2004 à 17:16:01    

D'accord, oui je comprends.
 
Donc deux solutions ( corrige moi si je dis une bétise :D )
- Augmenter la valeur lors de la compil du noyau
- mettre au max la valeur du noyau pour postfix, mais comment connaitre la valeur qu'il utilise actuellement dans ce cas?  
 
 
edit: parce que là si j'ai l'erreur c'est bien que je dépasse 209708, donc meme si je spécifie une valeur dans limits.conf ca n'ira pas non? Il faudrait forcement recompiler le noyau avec une valeur plus importante?
 
merci


Message édité par POWA le 30-06-2004 à 17:17:32
Reply

Marsh Posté le 30-06-2004 à 17:18:51    

la valeur du noyau peut se modifier dans /etc/sysctl.conf :
fs.file-max=X
 
pour changer on the fly :
sysctl -w fs.file-max=x
 
man sysctl et man sysctl.conf


Message édité par Dark_Schneider le 30-06-2004 à 17:20:04

---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 30-06-2004 à 17:22:47    

D'accord donc je vais essayer ceci
 
- ajouter fs.file-max=250000 dans /etc/sysctl.conf  
 
- Par contre, ensuite je peux aussi spécifier l'utilisateur postfix dans limits.conf mais c'est peut etre pas nécessaire si la limite se trouve etre suffisante?


Message édité par POWA le 30-06-2004 à 17:23:07
Reply

Marsh Posté le 30-06-2004 à 17:27:58    

merci beaucoup Dark_Schneider :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed