CrazyMoto Posté 3 Septembre 2006 Posté 3 Septembre 2006 (modifié) Bonjour le Hub ! Je rencontre des soucis important avec mes serveurs. J'heberge principalement mon Forum Moto Etant anciennement sur un serveur Bixeon chez sivit, je viens de migrer chez OVH avec la configuration suivante : Deux serveurs : Un pour apache/php et un autre pour mysql. Ce sont des PIV Dual Core 2*3.0Ghz avec 2*80Go en Raid1 ainsi que 1Go de ram. Ils sont sous debian. Le serveur mysql c'est du bonheur... Tout va bien ! pointe de load average 0.6 Mais le serveur apache c'est pas de la tarte ! J'ai commencé hier par un sérieux problème : Segfault d'apache... Hier j'ai tout essayé, installations diverses, toucher le moindre parametre de configuration, essayer apache 1.3, essayer le paquet debian, compiler moi meme... Desespéré, aprés 14h sur le PC a m'exploser le cerveau, je suis allé me coucher. Ce matin, l'esprit clair, mais ne trouvant pas de solution... Je tente une solution de fortune... Je migre en debian testing... Miracle ça segfault plus et ca tourne sans erreur. La configuration : apache 2.2.3 avec pour modules ceux par defaut, mod_rewrite et php 5.1.6 (avec pour seules extensions : par défaut, gd, mysql, APC Cache) Jusque la pas de soucis... Sauf que vers midi le serveur freeze. Reboot en hard. J'obtiens ceci dans mon syslog (je suis en kernel 2.4 ovh grsec): Sep 3 12:28:07 ns21856 sm-mta[27052]: rejecting connections on daemon MSP-v4: load average: 93Sep 3 12:28:20 ns21856 sm-mta[27052]: rejecting connections on daemon MTA-v4: load average: 116Sep 3 12:28:30 ns21856 sm-mta[27052]: rejecting connections on daemon MSP-v4: load average: 116Sep 3 12:28:42 ns21856 sm-mta[27052]: rejecting connections on daemon MTA-v4: load average: 148Sep 3 12:28:42 ns21856 sm-mta[27052]: rejecting connections on daemon MSP-v4: load average: 148Sep 3 12:28:59 ns21856 sm-mta[27052]: rejecting connections on daemon MTA-v4: load average: 167Sep 3 12:28:59 ns21856 sm-mta[27052]: rejecting connections on daemon MSP-v4: load average: 167Sep 3 12:29:14 ns21856 sm-mta[27052]: rejecting connections on daemon MTA-v4: load average: 183Sep 3 12:29:14 ns21856 sm-mta[27052]: rejecting connections on daemon MSP-v4: load average: 183Sep 3 12:29:29 ns21856 kernel: __alloc_pages: 0-order allocation failed (gfp=0x1d2/0)Sep 3 12:29:29 ns21856 sm-mta[27052]: rejecting connections on daemon MTA-v4: load average: 195Sep 3 12:29:29 ns21856 sm-mta[27052]: rejecting connections on daemon MSP-v4: load average: 195Sep 3 12:29:31 ns21856 kernel: __alloc_pages: 0-order allocation failed (gfp=0x1d2/0)Sep 3 12:29:32 ns21856 last message repeated 2 timesSep 3 12:29:32 ns21856 kernel: VM: killing process httpdSep 3 12:30:32 ns21856 kernel: __alloc_pages: 0-order allocation failed (gfp=0x1d2/0)Sep 3 12:30:32 ns21856 kernel: VM: killing process httpdSep 3 12:30:32 ns21856 kernel: __alloc_pages: 0-order allocation failed (gfp=0x1d2/0)Sep 3 12:30:32 ns21856 kernel: VM: killing process httpdSep 3 12:30:32 ns21856 kernel: __alloc_pages: 0-order allocation failed (gfp=0x1d2/0)Sep 3 12:30:32 ns21856 kernel: VM: killing process httpdSep 3 12:30:32 ns21856 kernel: __alloc_pages: 0-order allocation failed (gfp=0x1d2/0)Sep 3 12:30:32 ns21856 last message repeated 4 timesSep 3 12:30:32 ns21856 kernel: VM: killing process httpdSep 3 12:30:32 ns21856 kernel: __alloc_pages: 0-order allocation failed (gfp=0x1d2/0)Sep 3 12:30:32 ns21856 last message repeated 3 timesSep 3 12:30:32 ns21856 kernel: VM: killing process sshdSep 3 12:30:32 ns21856 kernel: __alloc_pages: 0-order allocation failed (gfp=0x1d2/0)Sep 3 12:30:32 ns21856 kernel: VM: killing process httpdSep 3 12:30:48 ns21856 kernel: __alloc_pages: 0-order allocation failed (gfp=0x1d2/0)Sep 3 12:30:51 ns21856 kernel: __alloc_pages: 0-order allocation failed (gfp=0x1d2/0)Sep 3 12:30:51 ns21856 kernel: VM: killing process httpdSep 3 12:31:05 ns21856 kernel: __alloc_pages: 0-order allocation failed (gfp=0x1d2/0)Sep 3 12:31:05 ns21856 kernel: VM: killing process httpdSep 3 12:31:11 ns21856 /USR/SBIN/CRON[32327]: (root) CMD (/usr/local/rtm/bin/rtm 41 >/dev/null 2>/dev/null)Sep 3 12:31:20 ns21856 kernel: __alloc_pages: 0-order allocation failed (gfp=0x1d2/0)Sep 3 12:33:18 ns21856 syslogd 1.4.1#18: restart. J'analyse la situation... apparament apache2 s'est emballé, a bouffé toute la ram, et a fini par swapper a fond et tout faire crasher Je fixe un MaxClients à 120 au lieu de 256. Ca me permet d'éviter de trop charger. Situation stable depuis. Cependant serveur apache/php dépassé en heure de pointe. Motif : Environ 900 connectés sur mon forum Invision Power Board http://213.251.185.122/munin/ovh.net/ns21856.ovh.net.html On remarquera sur les graphs le MaxClient trop bas qui induit une pénurie de serveurs apache. Mais surtout la consommation monumentale en mémoire vive, et le gros pic de swap malgrés le MaxClient. J'observe que mes processus apache consomment vraiment beaucoup de mémoire vive... Je voudrais savoir si selon vous c'est normal ? Je dois avoir jusqu'a 20-25Mo de mémoire vive consommée par un processus apache bien nourrit ?! La solution la plus simple serait biensur de rajouter de la ram sur le dédié Ovh... Mais bon j'aimerais être sur de pas pouvoir améliorer la situation sans... Mes questions serait donc : Est ce que ma consommation de mémoire vive d'apache semble normale ? Comment je pourrais augmenter les performances de mon couple apache/php ? Est ce que des solutions extremes comme par exemple installer lighttpd sur mon serveur et rediriger toutes les requetes de contenu non dynamique depuis apache sur le lighttpd seraient une bonne chose ou se compliquer la vie pour pas grand chose ? Est ce que vous savez comment ca marche avec OVH si je veux rajouter 1Go de ram alors que j'ai payé pour un mois et qu'il me reste 3semaines de location prépayées ? Y a moyen d'avoir une facture pour 3semaine de ram ? Est ce que vous avez la moindre suggestion pour améliorer les performances de tout ça ? Biensur, je vous remercie d'avance énormément. Concernant les conseils, j'espere que Dan pourra m'éclairer de son experience, mais les conseils de tous sont biensur la bienvenue Un conseil n'a pas de prix. Concernant les parametres majeurs de mon apache prefork : StartServers 50 MinSpareServers 10 MaxSpareServers 20 MaxClients 120 MaxRequestsPerChild 25 Et un keepalive timeout a 3sec Pour le MaxRequestsPerChild, j'ai testé avec une valeur de quelques miliers, s'était pas mieux (les processus consoment plus de ram). Je reste biensur à votre entière disposition pour des informations complémentaires. Je suis pret à tester la moindre de vos suggestions en production. J'espere résoudre ces problèmes rapidement car demain je reprends mes études et il faut pas que mes histoires de serveurs me perturbent trop Merci de m'avoir lu ! Bonne soirée, Arnaud. Modifié 3 Septembre 2006 par CrazyMoto
guymauve Posté 3 Septembre 2006 Posté 3 Septembre 2006 Ouille vraiment désolé pour toi. Tu as essayé de contacter OVH ou non. IL me semble que c'est la première chose à faire. Maintenant je me tais et je laisse parler les pros. PS: Tu peux dévier une partie chez moi
CrazyMoto Posté 3 Septembre 2006 Auteur Posté 3 Septembre 2006 Merci de ton soutient guymauve, mais le problème apparament viendrait plus de moi que d'OVH
CrazyMoto Posté 4 Septembre 2006 Auteur Posté 4 Septembre 2006 Je me demendais aussi, Est ce que un php en fast cgi pourrait être une bonne idée ? Ca rendrait mes processus apache beaucoup plus légers, et me permettrait d'utiliser un mpm multithreadé... non ? Donc plus de ram dispo... ?
Dan Posté 4 Septembre 2006 Posté 4 Septembre 2006 Bonjour, Je vois que tu as compilé php avec APC ... quelle version ? Parce qu'une mauvaise version peut effectivement écrouler Apache. Et les logs que tu donnes démontrent que ton serveur est à court de SWAP... A quel niveau celui-ci se situe-t-il ? Dan
CrazyMoto Posté 4 Septembre 2006 Auteur Posté 4 Septembre 2006 Bonjour Dan, Merci de ta réponse, APC, j'ai pris la derniere version... Mais j'ai essayé sans ou avec eaccelerator, ça ne change pas grand chose... La configuration est par defaut avec un shm à 32 méga. Le dédié est sur un partionnement par défaut OVH : 512Mo de swap. Mais de toute manière, si je veux que mon serveur reste rapide, je suppose que je n'ai pas à l'utiliser. Je songe à tester un remplacement total d'apache par lighttpd... Reste à voir comment ça se comporte Encore Merci, Arnaud.
Dan Posté 4 Septembre 2006 Posté 4 Septembre 2006 Lorsque je te demande à quel niveau se situe le swap, ce n'est pas pour connaître le maximum, mais bien le niveau utilisé. En cas d'utilisation de swap, cela signifie que ce qu'il te manque c'est de la RAM. Perso, j'ai 2GB sur le Hub et le serveur ne swappe pas, mais avec le serveur précdent il swappait régulièrement avec 1GB de RAM. Dan
CrazyMoto Posté 4 Septembre 2006 Auteur Posté 4 Septembre 2006 L'utilisation du swap est visible sur les graphs que j'ai montré dans mon premier message ! Mon serveur souffre d'un manque de ram, c'est évident. Ce que je cherche à savoir, c'est pourquoi apache en consomme autant PS : sur le hub tu as 2Go mais tu as aussi mysql à heberger, je me trompe ? Puis tu as un trafic moins contraignant pour le serveur surement. Merci, Bonne soirée.
Dan Posté 4 Septembre 2006 Posté 4 Septembre 2006 Salut, Effectivement, je n'avais pas vu le lien vers les mrtg... Manifestement ton serveur ne swappe que peu... donc ce n'est pas la raison primaire. Apache 2 consomme plus de RAM qu'Apache 1.3.37 ... bien évidemment. Mais tu ne devrais pas limiter ton MacClients à 120, parce que tu dois avoir des périodes de blocage en cas de forte fréquentation. Que la RAM soit utilisée à 100% n'est pas anormal. Un serveur Linux aura toujours tendance à utiliser le maximum de RAM disponible et ne la libèrera qu'en cas de besoin. Ton forum est contraignant parce que tu as énormément de posts "microscopiques"... tous nantis d'images et bannières en signature. Je ne sais pas si tu héberges ces images ou si elles sont externes. Pour afficher 1Kb de texte, tu dois aficher une douzaine de posts alors qu'il ne m'en faut qu'un seul. Donc on gagne sur le nombre d'accès. En fait ton trafic Apache n'est pas beaucoup plus élevé que celui du Hub, il est seulement beaucoup moins efficace. Comment as-tu paramétré le KeepAlive ? Je mettrais ces valeurs, pour commencer: StartServers 20 MinSpareServers 10 MaxSpareServers 20 MaxClients 250 MaxRequestsPerChild 100 Dan PS: pour finir, voici une info qui peut t'orienter dans la bonne direction We do not recommend using a threaded MPM in production with Apache2. Use the prefork MPM instead, or use Apache1. For information on why, read the related FAQ entry on using Apache2 with a threaded MPM It is not as fast, but is considered to be more stable. (http://packages.debian.org/stable/net/apache2-mpm-prefork(...) )
CrazyMoto Posté 4 Septembre 2006 Auteur Posté 4 Septembre 2006 Bonsoir Dan, Pour le Maxclient je sais bien que ça me bride et que je me retrouve en penurie de serveurs en pointe... mais si je l'ai fais s'était pour éviter de replanter la machine Je viens d'appliquer tes parametres pour tester ! Mon keep alive est à 3 secondes... Ca me permet d'avoir le moins de processus inutiles qui consomme de la ram possible Concernant l'utilisation de ram... Je ne parlais pas de l'utilisation globale, je sais bien qu'elle est toujours maximale avec linux, mais bien de l'utilisation minimale, donnée par la commande free : A l'instant : [root_AT_PIVD_Master:~]# free -m total used free shared buffers cached Mem: 991 956 35 0 1 33 -/+ buffers/cache: 922 69 C'est la que ca devient critique je me trompe ? Pour ton message au sujet des MPM multithreadés... Je n'en utilise pas
CrazyMoto Posté 4 Septembre 2006 Auteur Posté 4 Septembre 2006 Je viens de remettre le MaxClients à 120.... Au bout de 5 min je commencais déja à swapper avec le maxclient "débridé"... Ca m'intrigue le fait que apache exige tant de ram. Dan, sur ton bixeon si tu fais un top et shift + m, tu observes jusqu'a quel pourcentage de tes 2Go de ram utilisé par un processus apache ? Je semble être bien parti pour commander de la ram à OVH Encore Merci, et surtout bonne continuation
Dan Posté 5 Septembre 2006 Posté 5 Septembre 2006 Avec un <shift-M> sous top, le process httpd qui consomme le plus utilise 0,9% de la RAM, soit 18Mb Par contre les processus mysql consomment plus (vu la taille du cache que j'utilise): jusqu'à 179MB par process. Dan
CrazyMoto Posté 5 Septembre 2006 Auteur Posté 5 Septembre 2006 Hum donc apparament mon serveur manquerait tout simplement de ram il faut croire... Je viens d'upgrader en PIV Dual plus plus... Je salue au passage le coté bon commercial d'OVH, qui ont été trés souples. Concernant mysql Dan, il me semble que top n'indique pas la vraie valeur consommée car dans ces threads est inclue une memoire qui leur est commune à tous Concernant l'optimisation du serveur... Hier soir j'ai tenté une migration totale sur lighttpd... Bilan php en fastcgi, ca rame... Ce soir je vais essayer de rediriger tout le contenu statique de mon serveur depuis apache vers un lighttpd sur un autre port... Reste à ce que je trouve comment Il me faudrait une rewrite rule qui fait un truc du genre : Si l'extension est pas .php on redirige /truc.ext vers www.domain.tld:81/truc.ext Si quelqu'un sait m'aider à faire cette redirection je suis pas contre Bonne soirée à tous !
CrazyMoto Posté 5 Septembre 2006 Auteur Posté 5 Septembre 2006 (modifié) J'ai fais moi même la configuration apache suivante : RewriteCond %{REQUEST_URI} !^/(.+)(\.php) RewriteCond %{REQUEST_URI} !^/$ RewriteRule ^/(.+) http://truc:81/crazymoto/$1 Mais lorsque je veux afficher www.crazymoto.net/ ca me redirige sur http://truc:81/crazymoto/index.html ... Je ne comprends pas trop.... Une idée ? Merci. Edit : j'ai reussi... ca venait du directory index de apache2 qui était en .html avant .php dans l'ordre... Resultats : rien de concluant, autant laisser apache pour tout : / J'ai plus d'autre solution que d'attendre ma ram je crois bien ++ Modifié 5 Septembre 2006 par CrazyMoto
destroyedlolo Posté 10 Septembre 2006 Posté 10 Septembre 2006 J'ai eu un probleme similaire sur mon modeste site : un gas en italie qui a pompe integrallement tout mon site J'ai bien regarde, et il me semble que PHP ne libere pas totalement toute la memoire utilisee et laisse Apache faire ce travail (et, dans mon cas, ca peu faire gros vu que je modifie des images a la vollee). Bref, comme ils pompaient toutes les images en meme temps, les process HTTPD gonflaient, gonflaient, gonflaient ... jusqu'a ce qu'ils n'y ait plus de memoire La solution que j'ai utilise a ete de reduire MaxKeepAliveRequests et MaxRequestsPerChild : c'est pas genial niveau perf, mais ca ne crash plus.
CrazyMoto Posté 10 Septembre 2006 Auteur Posté 10 Septembre 2006 Me concernant s'est bon avec les 2Go de ram mon serveur est en vacances
Dan Posté 10 Septembre 2006 Posté 10 Septembre 2006 Ben oui, c'était tout bête comme solution Pour info, APC est sorti dans une nouvelle version Dan
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant