A poil !
Par Petaramesh le mardi 20 mars 2007, 18:01 - Informatique non-duelle - Lien permanent
...ou la rançon de la gloire.
A mesure que l'audience de ce blog a augmenté, un problème a commencé à se faire jour,[1] qui atteint maintenant parfois le seuil critique : La puissance de mon serveur n'est plus suffisante pour faire face aux requêtes :-(
J'ai l'autre jour limité mon serveur web Apache à traiter au maximum 64 requêtes simultanées,[2] et là, la machine vient de se retrouver saturée à traiter simultanément 64 requêtes pendant plus de 20 minutes, avec une utilisation clavier pratiquement impossible, des temps de réponse atroces... Qui doivent évidemment se sentir tout autant du côté de mes lecteurs - pour autant que l'accès au site leur reste seulement possible.
Tronche de la bavure (cliquer pour une image lisible...), pour exemple et pour ceux qui comprennent un peu le bas-moldave :
Mordel de mamdead, il me faudrait un serveur au moins deux fois plus puissant que cette pauvre vieille canebé... mais évidemment c'est actuellement totalement hors de question... Donc il vous faudra vous contenter d'accepter mes excuses quand ça se mettra à ramer vilain... Et que piting, pendant ce temps-là, je ne peux plus rien faire, même pas lire mon mail, tellement que ça rame velu... Ou alors arracher le câble Ethernet et disparaître du réseau un moment en désespoir de cause ?
Ou alors # service httpd stop ?
Ça, quand j'ai ouvert ce blog, c'était pas prévu au programme, que j'allais écrouler ce serveur avec les 3 visiteurs hebdomadaires auxquels je m'attendais...












Commentaires
pitaing moi qui croyait qu'y avait que chez les filiales de TF 1 que ça merdrait gravos ...
Ça rame gravement, mais au moins ça ne plante pas, on n'est pas sous Windows ;-)
M'enfin, sous des giclées pareilles, il m'arrive de me demander si je ne suis pas la cible d'un DDoS...
En fait, ce qui se met à bouffer le plus de ressources, ce sont apparemment les écritures disques : syslog et MySQL pour mon outil statistiques PHPmyVisites...
Mourfff... Si j'avais un serveur web sans logs et sans stats, je pourrais sans doute encaisser une charge quadruple, mais je serais quand même comme qui dirait un peu dans le noir...
Les logs commencent à devenir poids-lourds, aussi...
euh ... mon vénéré hébergeur de chez TF1, quand y a trop de monde, le premier truc qui vire, c'est les stats et les logs ...
sinon ça cacate gravos coté admin ...
euh ... on monte un "serveur sans frontière" pour te faire payer un nouveau bouzin ???
Sympa le mode status, voila une bonne chose à installer :-)
64 simultanées, oui, c'est beaucoup. Combien de visites journalières ?
(Je dirais 2500 à 4000 ?)
Au niveau RAM, tu es sûr d'en avoir suffisamment pour ne pas swapper?
Sinon, tu pourrais essayer lighttpd à la place d'apache, ou aller brûler un cierge sur alt.sysadmin.recovery.
En dernier recours, essaye de faire des posts inspirés de ceux de Le Meur, ça devrait calmer ton problème de fréquentation
@Fred, de L. : Tiens, voilà une petite copie d'écran de BBClone... Hebdo / Annuelle / Mensuelle. "1K" = 1000 visites. J'avais pas regardé depuis longtemps, je n'aurais pas cru autant... (Cliquer pour agrandir)
Stats pour le seul site petaramesh.org, appels de pages du blog (ne tenant donc pas compte des hits d'éléments graphiques, etc)
Mon serveur héberge également quelques autre sites et blogs en plus de celui-ci, mais la charge n'est pas comparable... C'est clairement petaramesh.org qui pompe les ressources ;-)
@Urchin : Un serveur Linux swappe toujours, et il a bien raison. J'ai 1,5 Go de RAM et zéro slot encore disponible sur la carte mère (et zéro Zloty encore disponible dans le porte-monnaie ;-)
.
Euh... S'il a suffisamment de mémoire physique, ça serait un peu bête comme stratégie non?
@Urchin : ne veut rien dire, en fait, au-delà d'un certain seuil.
Un serveur aura à un moment donné besoin de mémoire pour une quelconque raison, et à ce moment-là, "se demandera" si la stratégioe la plus intelligente est de réduire la taille du cache-disque, ou de swapper dehors des pages de mémoire occupées mais inutilisées par les applications. Toutes les application (et bibliothèques) affectent des pages mémoires qu'elles n'utilisent jamais (ou presque) une fois l'application démarrée, donc, face à un besoin de mémoire il peut être plus approprié de swapper-out des pages mémoire d'applications (ou de bibliothèques) qui ne servent à rien, plutôt que de réduire la taille du cache-disque. C'est ce que fait le noyau Linux, et c'est pourquoi toute machine démarrée depuis suffisamment longtemps et qui aura suffisamment "travaillé" pour affecter toutes la mémoire au cache-disque, se mettra à swapper des trucs dès qu'on lancera de nouveaux logiciels ou processes qui demanderont de la mémoire RAM.
Donc, j'ai beau avoir 1,5 Go de RAM, il m'arrive d'avoir 500+ Mo de RAM affectés au cache-disque, et tout de même 200+ Mo swappés...
Si ton nom de domaine est géré par gandi, je te conseille de faire comme ma pomme : ouvrir le blog dotclear intégré à ton nom de domaine et tout transférer là-bas. Là, tu as des serveurs costaud pour faire le boulot. C'est le choix que j'ai fait pour ne pas me retrouver avec un hébergement prohibitif à charge pour cause de bande passante!
@Le Monolecte :
C'est bien sûr le cas.
>
J'y ai déjà songé. Il est sûr que cela me libérerait des problèmes "techniques", mais j'aime bien faire les choses moi-même et ne dépendre de personne... Et puis, avoir son propre serveur apporte uen souplesse inégalable avec un hébergement externe... Je m'y résoudrai peut-être un jour si je n'ai pas d'autre choix, mais j'aurais l'impression de perdre quelque chose, qui est important pour moi...
J'ai une relation particulière avec cette putain de machine, en fait... :-}
Pourquoi est-ce que tu ne te réécris pas un petit script de stats avec le strict minimum d'infos collectées ? Tu dois récolter un maximum de trucs qui te servent une fois tous les 36 du mois.
Pitaing, j'ai tout lu le fil de commentaire et j'ai compris... allez on va dire 50% des propos qui y sont inscrits... Presque on pourrait dire que je progresse ;-D
En tous cas, toutes mes félicit' pour cette notoriété dont tu ne dois pas bien savoir si elle te fait plaisir ou elle te gave ! :-]
Swâmi :
Tu pourrais peut-être mettre tes lecteurs a contribution, une alim c'est pas si cher que ca et nous sommes nombreux apparemment :) Pour la machine en elle-même c'est certes plus chaud...
Rotation hebdomadaire des logs http ? Vérification de la config des logs binaires de mysql ? Vérification de la config de syslog pour par exemple n'écrire sur disque que toutes les 1000 lignes ? ...
Mon estimation était faussée parce que pour cette taille de log, c'est une semaine d'un site à peine plus visité chez moi. J'imagine que tes logs apache sont limités au strict nécessaire.
Les 64 instances étaient utilisées parce que la machine était blindée, évidemment. Et il faudrait comprendre pourquoi. Sur un de mes serveurs, ces temps, j'ai MySQL5 qui devient fou et met la machine en load > 200. Une vraie misère pour reprendre la main si MySQL refuse de crever (ceci est une image).
Gn ?
Ah ben oui, j'me disait, aussi...
Règle ton apache pour virer les machines consultant ton site sous Internet Explorer : ce sont des suppôts du capitalisme qui paient Microsoft pour quen plus tu te décarcasses à les distraire.
@Steph. K (#14) :
Un de mes pires problèmes étant que les journées n'ont que 24 heures, l'autre de mes pires problèmes étant que je ne connais pas le PHP et n'ai jamais eu le temps de m'y mettre, je n'ai pas envisagé de réécrire BBclone ou PHPmyVisites... J'ai bien un vieux Webalizer, mais il ne produit pas les mêmes infos (et mélange tous mes sites car je ne me suis jamais donné la peine de splitter les logs... Ça fait partie des trucs que je ferai... un jour... peut-être... C'est-à-dire probablement jamais... Parce que j'ai d'autres trucs mille fois plus chauds à foutre... et que déjà je n'ai pas le temps... et que ma pile "à faire" ressemble à la tour de Pise...)
@SBF Laflote (#15) :
Hahaha ! Je crois que ça me gave un peu, surtout quand je me vois débordé par des fils de commentaires auxquels je n'ai même plus le temps de répondre et qui débordent en trolls ou en sonneries en tout genre... (Non, ce n'est pas pour toi que je dis ça ;-)
@Régis (#16) :
Le problème, c'est que rien qu'une telle idée me déprime ;-) C'est vraiment quelque chose à quoi je n'envisagerais de recourir qu'en tout dernier... recours.
@Fred., de L. (#17) :
Je l'ai envisagé bicoze la taille, mais ça ne ferait rien question perfs... Et il faudrait que je voie à re-cronner mon Webalizer différemment pour tenir compte de la rotation... Et pas fait... etc ;-)
>
Elles sont désactivées (je ne réplique pas).
>
Pas idiot, faudrait que je voie... Euh j'ai un doute d'ailleur, je ne crois pas qu'Apache loggue via syslog... Il doit logguer de lui-même... Ça c'est typiquement le genre de question qu'on ne se pose jamais tant qu'on n'est pas emmerdé ;-)
>
Abon ? Non, mes logs sont normalement "bavardes"...
>
Chez moi, encore heureux que ce n'est pas tout le temps ! Mais ça commence à devenir *souvent*...
>
Chez moi, j'ai vu MySQL qui part en gros bouffe CPU et tortionnaire de disques, aussi... Pour ça que je soupçonnais PHPmyVisites (à cause des écritures) ou mon antispam DSPAM (un tueur de bae de données) : Quand je reçois une grosse giclée de spam sur mes spamtraps, la base de données mange bon :-}
@Idée du jour (#19) :
...Tu aurais du préciser "Idée à la con du jour"...
syslog et la synchro : c'est souvent par là que je parviens à retrouver un load acceptable sur les serveurs installés avec toutes les options par défaut. Genre, l'antispam, l'antivirus et le serveur de mails qui écrivent tout dans leurs fichiers de log respectifs ET dans le fichier commun syslog ET dans le fichier messages ET dans le fichier debug... etc. Même sur les debian vierges je trouve des trucs à revoir. Et même après un premier nettoyage, un an après, j'trouve encore des choses à modifier.
antispam : avoir une passerelle avec du greylisting, ça évite les grosses surcharges dues aux spamzombies. Ca m'a changé la vie d'en activer. Si un jour faire du troc t'intéresse, et que tu ne crains pas que tes mails passent par une passerelle...
les stats : je n'utilise que webalizer. Pour sa simplicité, et le côté largement suffisant des résultats qu'il procure. Avec une rotation annuelle des fichiers, ça permet en plus d'avoir une mémoire sur les années précédentes. Aussi. Ca vaut le coup de prendre un peu de temps pour ça. A mon avis :-) C'est quoi qui te bloque pour sa mise en oeuvre ?
@Fred, de L. :
Je fais du greylisting avec l'excellent sqlgrey. Très efficace, sans qu'il soit besoin d'une machine séparée...
>
Rien ne me "bloque", mais je n'ai pas eu jusqu'ici la paire d'heures à consacrer à la remise à plat de mes logs Apache (notamment faire une seul log par virtualhost), et j'avais trouvé plus sympas des outils comme BBClone ou PHPmyVisites qui ont l'avantage d'être "temps réel" et donc de pouvoir montrer si tel ou tel article publié il y a une heure ou deux a été consulté... Sans qu'il soit besoin de lancer un job à la main ou d'attendre le lendemain que le cronjob soit passé...
@ le gabian :
Moi je suis loin de comprendre 50%... très loin même, alors que d'habitude je suis vaille que vaille le sens du propos ! Mais je crois que je sais pourquoi : Swâmi parle le Bas Moldave dans ses billets, alors que ses geeks de commentateurs (sans offense, hein !) parlent le Télégramme Sysloguien (si j'ai bien saisi).
Forcément, c'est moins clair, on n'est pas habitué(es), et c'est beaucoup moins chantant comme langue...
Tu fais ce que tu veux avec ton blog, mais depuis que le mien est chez gandiblog, je n'ai quasiment jamais eu d'interruption de service. Mon seul soucis, c'est d'écrire. Les gandimens s'occupent du reste!
Enfin, bon, si vraiment on tient à faire des I/Os dans les logs au moindre évènement serveur, faut pas s'étonner que la bueaucratie système, en interne, finisse par bouffer toutes les ressources.
Mais bon, il est vrai que, déjà, on parle de Web. Et d'Apache... Et de transferts de données pour lesquels la moindre acrostiche en haut à gauche de l'écran pèse déjà aussi lourd que la totalité des ressources disponibles dans 20 ordinateurs grand public des années 1980
Ces liens peuvent t'interresser: Comment survivre à un slashdotage avec un celeron 466 ?
Quelques astuces pour suivre à un slashdotage.
Les conseils sont un peu extreme, mais ca devrait regler tes soucis pour un moment.
Passe en MPM worker, Prefork est trop gourmand.
Penser à dire merci à ceux qui ne te lisent que via aggrégateur rss!!!
Moi qui croyait que Dotclear roulé à la main sous les aisselles c'était le top du top... Bon je retourne à mon agrégateur alors !!!
@Trub' : Ah mais c'est vrai que Dotclear c'est d'la balle... Même le Vatican, L'Opus Dei et plein d'autres curés l'ont adopté, c'est dire ! Livré avec une hostie ! Au passage, Gandiblog tourne également sous Dotclear...
Et on y trouve également des socialos-ségolénistes, c'est dire ! ;-)
(Des socialistes ! Hiiii ! Quelle horreur ! Vade retro ! Ben ouais, mais c'est rien que pour faire plaisir à Trub', qu'elle se sente moins seule avec sa ségolènitude...)
Moi, je comprends 0% et je lis quand même.
Vous croyez que j'ai un problème?
@mc :
Ça dépend si tu fais ou non partie de l'Opus Dei... :-}
@ mc :
c'est ça, le talent des Gurus...
Heureusement je veux croire que ce Guru là ne nous affaiblit pas le ciboulot avec des aliments sousprotéinés (oui, j'ai faim, et j'ai envie de VIANDE !) ni ne nous endort avec des belles paroles incompréhensibles... ;o)
@Ga(i)elle :
Manonasha, Chitta Shuddhi, Vasanakshaya.
T'as plus qu'à installer "Paypal"! :)