[Tu t'étais fait avoir par le reply-to toi aussi !] On Monday 27 May 2002 07:17, you wrote: > > je crois avoir mis en évidence un bug du serveur Apache. > > Comme tout le monde le sait, mon serveur est sous dimensionné par > > rapport au trafic qu'il genere. Il a en effet 64 Mo de Ram (dont 2 > > utilisés par la carte graphique) et 128 Mo de partition swap. La > > memoire physique est bien sur utilisée à 100% dès le démarrage des > > services de base. Apache, service le plus gourmand du serveur, est > > donc obligé de placer la plupart de ses pages en swap mais on dirait > > qu'il ne les libère pas (un peu comme la majorités des programmes > > Windows et surtout Internet Explorer !). Ce comportement est mis en > > évidence par le dernier graphe de la page http://mrtg.zaphebergeur.net. > > Cependant, quand j'arrete Apache, il rend au système la totalité des > > pages qu'il utilisait. Mais lorsque le serveur est très sollicité la > > memoire swap libre baisse, baisse, baisse, jusqu'à planter le serveur > > de façon pas élegante du tout ! > > Les relevés de mrtg sont faits sur l'output de la commande free, > > section swap. Tout ceci n'a rien à voir avec les processus "defunct" > > parce qu'ils sont gerés normalement (=quand le parent a fini son > > boulot il tue les gosses !). > > > > Qu'en pensez-vous ? C'est bien un bug d'Apache ? > > Combien de processus Apache tournent sur la machine ?
La commande ps -C httpd | wc -l me renvoie 12 lignes donc 11 processus (la premiere étant une entete). > > Tu peux observer facilement qu'il y a un apache qui tourne > sous root, et les autres sous l'uid d'apache, souvent nobody > ou apache. > > Tu peux modifier le nombre de processus qu'Apache lance, > et par conséquent ses besoins en memoire. > > Regarde les parametres MinSpareServer et MaxSpareServer > pour changer ces parametres. Ils sont encore sur leurs paramètres par défaut, c'est à dire respectivement 5 et 10. > > Ensuite, chaque processus sert un nombre maximal de requettes > puis se tue, c'est le parametre MaxRequestsPerChild qui decide > de ca. Par contre c'est peut-etre ce paramètre là qui rentre en jeu. Il était à 0 donc infini. Le commentaire dans httpd.conf dit : "# MaxRequestsPerChild: the number of requests each child process is # allowed to process before the child dies. The child will exit so # as to avoid problems after prolonged use when Apache (and maybe the # libraries it uses) leak memory or other resources. On most systems, this # isn't really needed, but a few (such as Solaris) do have notable leaks # in the libraries. For these platforms, set to something like 10000 # or so; a setting of 0 means unlimited." Je ne suis pas sous Solaris mais peut-etre que sans le vouloir j'ai des librairies qui ne savent pas bien gerer la memoire et qui y restent meme quand on n'a plus besoin d'elles. Je l'ai donc is à 200 pour voir si j'ai un gros changement, si oui j'utiliserai la valeur qu'ils conseillent. > > Je pense que tu devrais jouer un peu avec ces parametres, qui > devraient regler tes problèmes de memoire. Pour l'instant merci beaucoup, si ça ne marche toujours pas je reviendrai à l'attaque ! :) Dario ______________________________________________________________________________ ifrance.com, l'email gratuit le plus complet de l'Internet ! vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... http://www.ifrance.com/_reloc/email.emailif Linux-Azur : http://www.linux-azur.org Désinscriptions: http://www.linux-azur.org/liste.php3 **** Pas de message au format HTML, SVP ****
