Je suis en cours d'exécution Apache2 avec mpm_prefork sur un serveur Mediatemple (DV). Aucun changement significatif n'a été apporté à la configuration de ma serveur récemment. httpd.conf est actuellement défini sur les éléments suivants:
MaxKeepAliveRequests 200
KeepAliveTimeout 15
<IfModule prefork.c>
StartServers 10
MinSpareServers 10
MaxSpareServers 10
MaxClients 200
MaxRequestsPerChild 4000
</IfModule>
Mais je reçois l'erreur suivante juste avant d'un accident d'Apache à part entière:
[Thu Jun 04 18:30:24 2009] [warn-phpd] mmap cache can't open /var/www/vhosts/mydomain.com/httpdocs/filename.php - Too many open files in system (pid 19873)
Je suis ennuyé par la garde d'enfants de ce serveur pour le redémarrer lorsque Apache se bloque. Aider?
de 'Man Proc':
/ proc/sys/fs/fs/fs/fs/max Ce fichier définit une limite à l'échelle du système sur le nombre de fichiers ouverts pour tous les processus. (Voir aussi SETRLIMIT (2), qui peut être utilisé par un processus pour définir la limite de processus, RLIMIT_NOFILE, sur le nombre de fichiers qu'il peut s'ouvrir.) Si vous obtenez de nombreux messages d'erreur sur l'utilisation des poignées de fichier, essayez Augmenter cette valeur:
echo 100000 > /proc/sys/fs/file-max The kernel constant NR_OPEN imposes an upper limit on the
valeur pouvant être placée dans le fichier-max.
If you increase /proc/sys/fs/file-max, be sure to
augmenter/proc/sys/fs/inode-max à 3-4 fois la nouvelle valeur de/proc/sys/fs/fichier-max, ou vous manquerez d'inodes.
**/proc/sys/fs/file-nr** This (read-only) file gives the number of files
actuellement ouvert. Il contient trois nombres: le nombre de poignées de fichier allouées; le nombre de poignées de fichier libres; et le nombre maximum de poignées de fichier. Le noyau attribue le fichier gère de manière dynamique, mais cela ne les libère pas à nouveau. Si le nombre de fichiers alloués est proche du maximum, vous devez envisager d'augmenter le maximum. Lorsque le nombre de poignées de fichier libres est grand, vous avez rencontré un pic dans votre utilisation des poignées de fichier et vous n'avez probablement pas besoin d'augmenter le maximum.
Le deuxième numéro vaut la peine de voir pour voir si le premier numéro est ce que vous devez augmenter. Si tel est le cas, vous pouvez la définir dans votre /etc/sysctl.conf avec:
fs.file-max=512000
Notez que cela définit le système limite; La limite par utilisateur est définie avec "ulimit", que vous avez déjà indiquée que vous connaissiez bien.
Vérifiez lsof pour voir ce qui se passe réellement. Dépasser une limite déraisonnablement élevée est souvent due à une fuite ou à un autre bogue.