[Serveur dédié] Pb avec Apache

Nouveau WRInaute
Bonjour, quotidiennement, le soir, je constate un pb avec Apache, ce qui rend l'accès au site difficile.

En fait, quand on fait un apache-status, il n'a jamais de slot libre ( " 0 idle servers " ) alors que les variables min_spare_servers et max_spare_servers du httpd.conf sont respectivement à 10 et 20.

Redémarrer Apache ne résoud pas le pb.

Avez-vous déjà connu ce problème ? Savez-vous ce que je dois faire ?

Merci !
 
WRInaute impliqué
Tu as beaucoup de visiteurs/requetes ?
Tu tournes sous Linux / combien de RAM ?
Tu as quelle version d'Apache ?

20 Spare servers c'est pas beaucoup, mais il faut également savoir à combien ton MaxClients est...
 
WRInaute impliqué
Voici un extrait de ma conf sur Apache 2 (je suis en pre-fork), ce qui est le défaut si tu es également sur Apache 1.

<IfModule prefork.c>
StartServers 50
MinSpareServers 30
MaxSpareServers 80
MaxClients 150
MaxRequestsPerChild 0
</IfModule>

Avec 512 Mo de RAM sur la machine... (mais d'autres services tournent dessus)

Attention à mettre des valeurs pas trop excessives, tu pourrais bouffer inutilement de la RAM avec des processes qui ne serviraient a rien....
Ni mettre un MaxClients delirant....
 
Nouveau WRInaute
Alors j'ai :

MaxClients 150
MinSpareServers 10
MaxSpareServers 20
MaxRequestsPerChild 10000

Ma machine est un P4 1 GO de ram.
Je constate chaque fois ce pb vers 22h , après avoir subi une pointe de fréquentation (environ 800/900 personnes connectées simutanément).
En gros, on dirait qu'Apache a du mal à forker, et donc les requetes ne sont pas traitées. Ca dure qques heures.

Le pire c'est que la charge du serveur reste alors très basse (moins de 0.50 ...) alors je sais pas trop ..

(au fait : je trouve que 80 en maxspareservers ça fait bcp , non ??)
 
Nouveau WRInaute
En gros pour visualiser le pb : voilà ce que j'ai :

Code:
Current Time: Wednesday, 08-Dec-2004 23:32:32 CET
Restart Time: Wednesday, 08-Dec-2004 23:27:42 CET
Parent Server Generation: 0
Server uptime: 4 minutes 50 seconds
Total accesses: 9 - Total Traffic: 2 kB
CPU Usage: u.02 s.07 cu0 cs0 - .031% CPU load
.031 requests/sec - 7 B/second - 227 B/request
9 requests currently being processed, 0 idle servers

LWLSS.L......L.......R............R.............................
................................................................
................................................................
................................................................

Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"L" Logging, "G" Gracefully finishing, "." Open slot with no current process

" 0 idle servers " >> aucun " Waiting for Connection " >> pas de thread libre pour pouvoir traiter les requetes qui arrivent ....
 
WRInaute impliqué
miss34 a dit:
Alors j'ai :

MaxClients 150
MinSpareServers 10
MaxSpareServers 20
MaxRequestsPerChild 10000

Ma machine est un P4 1 GO de ram.
Je constate chaque fois ce pb vers 22h , après avoir subi une pointe de fréquentation (environ 800/900 personnes connectées simutanément).
En gros, on dirait qu'Apache a du mal à forker, et donc les requetes ne sont pas traitées. Ca dure qques heures.

Le pire c'est que la charge du serveur reste alors très basse (moins de 0.50 ...) alors je sais pas trop ..

(au fait : je trouve que 80 en maxspareservers ça fait bcp , non ??)

900 personnes connectées en meme temps...ca doit bien dépasser les 150 Clients en meme temps...
Augmentes ton MaxClient a 250 par exemple, surtout que tu as 1Go...
En gros ce qui se passe (surtout si ton rush vient en soirée), c'est que les gens dépassent largement les 150 clients utilisés, donc Apache met en queue chaque nouvelle connexion entrante...
Tu as beaucoup de queue, donc forcement les gens s'accumulent ! :D
Et c'est ce qui donne cette impression de machine surchargée...alors que ton load est faible....

Passe a 250 Client, redemarrage Apache, et regarde si ca change....
Je suis sur a 99% que le probleme sera réglé :)

Sinon oui 80 ca fait beaucoup, c'etait sur une machine de test :D
Désolé me suis trompé de machine, je suis à 30 sinon...
Et je n'ai pas 0 MaxRequestPerChild, mais 2000 pour eviter les problemes mémoire sur un processus.
 
WRInaute impliqué
miss34 a dit:
En gros pour visualiser le pb : voilà ce que j'ai :

Code:
Current Time: Wednesday, 08-Dec-2004 23:32:32 CET
Restart Time: Wednesday, 08-Dec-2004 23:27:42 CET
Parent Server Generation: 0
Server uptime: 4 minutes 50 seconds
Total accesses: 9 - Total Traffic: 2 kB
CPU Usage: u.02 s.07 cu0 cs0 - .031% CPU load
.031 requests/sec - 7 B/second - 227 B/request
9 requests currently being processed, 0 idle servers

LWLSS.L......L.......R............R.............................
................................................................
................................................................
................................................................

Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"L" Logging, "G" Gracefully finishing, "." Open slot with no current process

" 0 idle servers " >> aucun " Waiting for Connection " >> pas de thread libre pou
r pouvoir traiter les requetes qui arrivent ....

Arf c'est étrange !
Tu as plein d'open slot si on en suit ce rapport !?

9 slots avec 900 personnes sur le site ?
C'est parce que le serveur Apache vient d'etre reboote recemment ?

Ton probleme ressemble pourtant typiquement à la machine qui n'a pas assez de slots pour accepter les clients, et c'est logique avec 900 simultanés....
 
Nouveau WRInaute
En fait : durant une heure ou deux, le serveur prend une charge de pointe (la charge dépasse meme les 20 ...) mais toutes les requetes sont traités en moins de 2 secondes donc tout va bien.

Puis lorsque on retombe un peu, d'un coup le Apache "plante" : et ce qui est bizarre , c'est qu'il m'affiche aucun slot susceptible d'accueilir une connexion ... et évidemment comme il traite presque plus rien .. ben la charge tombe à 0.5

meme en redémarrant apache et sql (les deux applis principales) .. rien n'est résolu .. Puis au bout de 2/3 heures, tout redevient à la normale.

(sinon, pour ce que tu me disais , un maxclients de 150 suffit quand tu as 800 connectés car les pages se géneres 0.1 sec et les 800 personnes ne font pas de requetes exactement au meme moment).
 
WRInaute impliqué
miss34 a dit:
(sinon, pour ce que tu me disais , un maxclients de 150 suffit quand tu as 800 connectés car les pages se géneres 0.1 sec et les 800 personnes ne font pas de requetes exactement au meme moment).

150 conviennent sur une machine que j'ai avec 600 personnes connectees....mais mes requetes sont légeres et très rapides, tout est quasiment en texte.

Mais ca ne convient pas du tout pour quelqu'un que je connais, qui avec moins de personnes en ligne, dépasse largement cette limite...

Il avait d'ailleurs des symptomes assez similaires....

Et en allant sur le site de ton profil, on voit qu'il y a des masses de photos, a chaque fois c'est un slot d'Apache qui est bouffé..
(Si tu veux réduire ta charge, il est d'ailleurs souvent préférable d'isoler les images sur un serveur HTTP beaucoup plus léger qu'Apache)

Mais bon d'après ton apache-status et ce que tu dis, c'est plus du tout le cas....

Ton serveur va tout de meme longtemps a 20 de charge pendant une longue période...
Tu parles du reboot d'Apache, mais est-ce la meme chose après le reboot global du serveur ? (si c'est un probleme du kernel ou je ne sais quoi un poil plus systeme)...
Il reste de la RAM dispo ?
Tu swappes beaucoup durant le rush des 20 de charge ?
 
Nouveau WRInaute
Ca me donne ça :
Code:
             total       used       free     shared    buffers     cached
Mem:       1024832     887436     137396          0     105584     655164
-/+ buffers/cache:     126688     898144
Swap:       522104       6800     515304
Total:     1546936     894236     652700

rien d'anormal, si ?
 
WRInaute impliqué
Non tu as un poil swappé, rien d'anormal....
Et il te reste de la RAM....

Dans l'ordre j'essaierais :

Couper / Relancer Apache :

-> apachectl stop

-> "killall httpd" pour etre sur que rien ne traine, on sait jamais :)

-> apachectl start

Si ca change rien, essayer le reboot de la machine, si ca corrige le probleme, c'est un probleme peut-etre plus profond....
Et puis la les problemes avec le kernel c'est moins sympa à trouver :)

Sinon tu as regarde dans les logs d'erreurs d'Apache ?
Il te dit pas des choses interessantes ?
 
WRInaute impliqué
Ouf tu as du bol, j'ai déjà cette erreur... :D

Mais moi c'etait plus brutal, Apache ne redemarrait plus du tout, pas dans un état second comme le tien....

Ca veut dire que tu as un fichier qui fait plus de 2Go auquel il accede....
Dans 99.99% il s'agit d'un fichier de log qui devient trop gros....

Meme si tu utilises logrotate ou autre, il se peut que la rotation des logs ne soit pas suffisante par rapport a ton trafic et que ton fichier de log soit trop gros....

Si par exemple c'est chaque jour que tu vires ton fichier, après une bonne journée, tu peux saturer les 2go....d'ou le ralentissement le soir...

Ca m'est deja arrivé, sauf que dans mon cas c'etait Apache qui ne fonctionnait plus du tout....

Pour trouver le gros fichier...

du -m dans /usr/local/httpd/logs (si c'est là ton répertoire de logs Apache)....
Et vire, ou mv les fichiers qui sont trop gros (> 1900 M)....

Redemarre ensuite Apache....
 
WRInaute impliqué
Ok tu as édité ton post, ils donnent la meme solution....
Ca semble etre la bonne piste :)

Bonne chance, mais a priori c'est ca.... :D

Sinon 20 de load en rush, c'est très élevé....tu devrais prendre des mesures pour limiter ca....
 
Nouveau WRInaute
C'est bon, j'ai trouvé : c'était le log des access qui pesait 2 GO ....
Et en fait ça me faisait ça chaque jour, et c'est effectivement à 4h du mat que tout rerentrait dans l'ordre (heure du log_rotate).

Un ptit redémarrage d'apache et voilà !!
 
WRInaute discret
Excellent ce sujet !
Il vient de me permettre de régler un problème aléatoire que j'avais avec Apache également :D
Merci !

P.S.: + un autre problème différent, mais que j'ai découvert en visualisant les logs d'erreur ^_____^
 
Nouveau WRInaute
Ben écoute, moi c'est pareil, en lisant mes logs, en plus du pb précédemment cité je me suis rendu compte que j'avais cette erreur en boucle :
Code:
[Thu Dec  9 01:01:47 2004] [error] [client --.--.--.--] (13)Permission denied: cannot read directory for multi: /home/-----/www/
[Thu Dec  9 01:01:47 2004] [error] [client --.--.--.--] (13)Permission denied: cannot read directory for multi: /home/-----/www/
[Thu Dec  9 01:01:47 2004] [error] [client --.--.--.--] (13)Permission denied: cannot read directory for multi: /home/-----/www/
[Thu Dec  9 01:01:47 2004] [error] [client --.--.--.--] (13)Permission denied: cannot read directory for multi: /home/-----/www/
[Thu Dec  9 01:01:47 2004] [error] [client --.--.--.--] (13)Permission denied: cannot read directory for multi: /home/-----/www/
[Thu Dec  9 01:01:47 2004] [error] [client --.--.--.--] (13)Permission denied: cannot read directory for multi: /home/-----/www/
[Thu Dec  9 01:01:47 2004] [error] [client --.--.--.--] (13)Permission denied: cannot read directory for multi: /home/-----/www/
[Thu Dec  9 01:01:47 2004] [error] [client --.--.--.--] (13)Permission denied: cannot read directory for multi: /home/-----/www/
[Thu Dec  9 01:01:47 2004] [error] [client --.--.--.--] (13)Permission denied: cannot read directory for multi: /home/-----/www/
[Thu Dec  9 01:01:47 2004] [error] [client --.--.--.--] (13)Permission denied: cannot read directory for multi: /home/-----/www/
..........

C'était un pb de droit d'accès en lecture d'un dossier ...
Enfin, ça fait du bien d'en apprendre tous les jours, surtout que la plupart du temps, sur ce forum on trouve des aides très intéressantes ...
 
WRInaute impliqué
miss34 a dit:
C'est bon, j'ai trouvé : c'était le log des access qui pesait 2 GO ....
Et en fait ça me faisait ça chaque jour, et c'est effectivement à 4h du mat que tout rerentrait dans l'ordre (heure du log_rotate).

Un ptit redémarrage d'apache et voilà !!

C'est ce que je t'ai mis dans mon post :)

Bon sinon il faut donc que tu fasses des rotations plus souvent....genre tous les 12h....
Ou que tu loggues moins d'elements....

Tu auras à priori ce probleme tous les soirs sinon.....
 
Discussions similaires
Haut