[Apache2 + FastCGI] augmenter nombre de fichiers ouverts

Hello,

J’ai un serveur sur lequel j’héberge plusieurs sites. Depuis une semaine, j’ai occasionnellement des erreurs 500 sur tous les sites que j’héberge. J’utilise Apache2 + FastCGI + SuExec.

Ne trouvant pas au départ de solution et pensant que FastCGI était le coupable, j’ai remplacé FastCGI par suPHP.

Il s’avère en fait que Apache ne veut pas ouvrir simultanément plus de 1024 fichiers, que ce soit FastCGI ou suPHP, c’est ce qu’indiquent les logs. Donc pour l’obliger à en accepter plus, j’ai ajouté ceci dans /etc/init.d/apache2 :

Ainsi, plus de soucis et plus d’erreurs 500.

Seulement, avec suPHP, les performances ne sont pas au RDV et les caches opcode PHP tels APC, xcache ou eAccelerator ne fonctionnent plus.

J’ai donc remis FastCGI + Suexec et ajouté ma directive ulimit -n 4096 dans /etc/init.d/apache2.

Seulement voilà, ça ne fonctionne pas, FastCGI veut que je recompile Apache :

J’ai téléchargé les sources via un apt-get source apache2 car j’aimerais faire ça proprement, seulement je ne sais pas trop où spécifier un FD_SETSIZE plus grand. J’ai tenté dans le debian/rules à divers endroits (AP2_MODS_CONFARGS, AP2_EXTRA_CFLAGS, …), ça compile mais ce n’est pas pris en compte… J’ai toujours mon problème de 1024 fichiers…

Si ça cause à quelqu’un, ça m’intéresse, en attendant, je suis repassé à suPHP.

Dernière précision, le serveur tourne sous Etch et j’avais déjà été chercher les sources chez Lenny car pas de suexec chez Etch.
Le serveur tournait depuis plus de 6 mois avec le Apache2 de Lenny recompilé pour Etch sans soucis.

PS : merci :wink:

Mon ancien titre “[Apache2 + FastCGI] augmenter nombre de fichiers ouverts” n’inspirant pas grand monde, j’ai renommé mon sujet car ça concerne plus une question sur la recompilation d’Apache2.

Je me réponds à moi-même, j’ai fini par brancher mon cerveau et chercher un peu dans les sources. J’ai remis le titre original de ce post car c’est finalement un truc spécifique au module FastCGI.

De plus, si d’autres ont ce problème, font une recherche et tombent sur ce post, ça les aidera sûrement.

quote="AnatomicJC"J’ai donc remis FastCGI + Suexec et ajouté ma directive ulimit -n 4096 dans /etc/init.d/apache2.

Seulement voilà, ça ne fonctionne pas, FastCGI veut que je recompile Apache :

Je n’ai pas encore pris le temps de tester mais je pense qu’il faut garder le ulimit -n 4096 dans le script de démarrage d’Apache (j’ai mis 4096 mais c’est bien sûr à adapter suivant le nombre de fichiers requis et la puissance de votre serveur).

Dans les sources de libapache-mod-fastcgi, il faut éditer le fichier mod_fastcgi.h, on y trouve le fameux FD_SETSIZE :

#if (defined FD_SETSIZE) && (FD_SETSIZE > 1024) #define FCGI_MAX_FD FD_SETSIZE #else #define FCGI_MAX_FD 1024 #endif

Je vous tiens au jus dès que j’aurais pris le temps de recompiler et tester.

Edit : d’autres fichiers où j’ai trouvé FD_SETSIZE à 1024 :

srclib/apr/poll/unix/select.c
srclib/apr/include/apr.hnw

Salut à tous,

Désolé je déterre le sujet mais je rencontre le même soucis.

Ma plateforme d’hébergement fonctionne actuellement avec apache2-mpm-itk.
En faisant quelques tests avec VmWare, j’ai constaté que le mélange worker+fastcgi+php-fpm est plus rapide que itk tout en garantissant la sécurité entre les différents sites.

Le soucis que je rencontre est le même que précédemment, erreur 500 et dans les logs ceci :

J’ai tenté de modifier ulimit dans le script d’init d’apache2 mais cela ne fonctionne pas.
J’ai recompilé fastcgi en modifiant FD_SETSIZE à 10240 mais pas mieux.
Même chose en recompilant apache2-mpm-worker.

Une idée sur le soucis ?

Merci par avance.

Je passe en coup de vent…

Je crois qu’au final, j’avais modifié la configuration de FastCGI pour ne plus avoir ces erreurs.
Voici ce que j’ai actuellement:

[code]# cat /etc/apache2/mods-enabled/fcgid.conf

AddHandler fcgid-script .fcgi .php

IPCConnectTimeout 60
IdleTimeout 60
ProcessLifeTime 60
MaxRequestsPerProcess 500
DefaultMinClassProcessCount 0
DefaultMaxClassProcessCount 10
MaxProcessCount 30
SpawnScore 20
SpawnScoreUpLimit 30

[/code]

Mon lanceur PHP:

#!/bin/sh PHPRC=/var/www/suexec/www/ export PHPRC export PHP_FCGI_CHILDREN=0 export PHP_FCGI_MAX_REQUESTS=10 exec /usr/bin/php5-cgi

Sur une Debian Lenny…

Merci de ta réponse.
Cependant FastCGI et FCGI sont deux paquets différents, la configuration n’est pas la même.