Messieurs dames, je suis complètement tombé sur le c....!! Depuis des jours je me demande ce qui ne va pas sur Geekomatik.. Il arrive à servir des pages dans un délai *raisonnable", mais il est lent.. toujours lent...
Le serveur db est au plancher avec des process qui lui demandent carrément 100% de CPU pendant quelques secondes...
Je surveillais quelques pistes : les logs (si une erreur grave envoi 100 messages par secondes on est foutus), problèmes de cache, problèmes de crawlers qui "attaquent" le site, etc, sans vraiment trouver quelque chose de bien convainquant!!
Aprésa voir mis en place memcache et APC cache sur le serveur les performance étaient raisonnables mais pas satisfaisantes!
Je viens de découvrir ce soir la cause de ce ralentissement constant! Le spam dans les commentaires!
Depuis la dernière mise à jour de Geekomatik.com donc depuis environ un mois et demi j'avais complètement oublié de remettre en place les CAPTCHA partout sur le site! Quelle ne fût pas ma surprise de voir que rien qu'aujourd'hui le site Geekomatik a enregistré plus de 15 000 commentaires spam! En une seule journée! 10 nouveaux commentaires à chaque minute! Je comprends que le serveur commençait à montrer des signes de faiblesse, mais en même temps je suis content de voir qu'avec mes modifs le site a quand même tenu le coup!!
J'ai donc dû entâmer la suppression de plus de 100 000 commentaires de spam en un mois seulement!

Je décide donc de voir combien il en est entré dans la journée et je vois que juste aujourd'hui j'en ai reçu plus de 15 000 les robots ajoutent des commentaires de manière exponentielle!

Par chance que j'ai un bon système de nettoyage sur Geekomatik, il aura pris plus de deux heures pour supprimer les 15 000+ commentaires de la journée! Incroyable!
Depuis que j'ai remis mon CAPTCHA... rien du tout en plus de 5 heures!! J'encourage donc tout le monde à se munir d'un système de CAPTCHA avant d'avoir 100 000 commentaires à effacer sans outils efficaces! 
Avez vous déjà eu ou entendu parler d'anecdotes semblables ?? Parce que moi j'hallucine un peu !
Technorati Tags:
sam, 04/18/2009 - 07:14
... ouahou, impressionnant ! Et dire que je me plains quand je dois vider une liste de 100/200 spams une fois par semaine ! Courage..
sam, 04/18/2009 - 11:38
Le captcha n'empêchera pas les formulaires de se poster, donc il faut placer la vérification du captcha le plus haut possible dans le code afin d'économiser des ressources.
Aussi, je recommande de créer soi même un système de captcha. Utiliser un standard ou un répandu ne protégera que pour un certain temps, les spameurs s'adaptant aux captcha les plus utilisés.
Je m'en suis fait un qui pose un petit calcul à résoudre. Mais un tout bête "Taper XX" reste efficace. Et bien sûr, il faut passer le résultat attendu avec un md5 (et avec un "sel global").
Tu as fait comme moi ;-)
Pour tes problèmes de perf, il faut voir comment tu as mis en oeuvre ton cache. S'il est sur la page entière, le fait de poster un form de commentaires devrait théoriquement le "faire pêter" (com posté ou msg erreur) et là c'est pas bon du tout si tu as des spiders qui balayent tes pages.
Il faut que diviser ton cache sur une page donnée pour contrer cela (actu et com) , et à ne pas mettre de cache sur la partie form.
sam, 04/18/2009 - 12:37
Je cours mettre ca tout de suite...
Heureusement que tu as un truc efficace...
sam, 04/18/2009 - 12:55
@Mike : Ouais je suis impressionné d'avoir pu tous les effacer pendant la nuit simplement en lançant des processus de suppréssion de 15 000 à la fois...Je vais faire un article juste la dessus sur mon nouveau blog au sujet de Drupal...
@Maxime: Merci pour les conseils, effectivement le form est servi "caché" et effectivement s'il doit toujours afficher des erreurs le site va en souffrir... ma prochaine étape sera de bannir directement des adresses IP, masi en faisant bien gaffe de ne pas bannir des moteurs.. Bon je ne pense pas que ce soit google qui me spam avec des trucs genre "outdated viagra"...
Pour ce qui est du reste, au moins j'ai réussi à ramenner mysql à pratiquement 0% du CPU pour 90% du temps, donc il ne reste que le process de php à calmer, mais tout semble relativement normal en ce moment...
Pour ce qui est de Geekomatik et sa version généraliste en cours de préparation, je pense que je vais voir du côté des "file based cache" qui sert les pages sans même initialiser la db! Un bon Boost garanti!
@Benjamin: ouais il suffit de se lever un matin et de trouver 16 000 commentaires sur un blog pour sentir le besoin d'outils de gestions plus avancés!! ;)
sam, 04/18/2009 - 14:29
@Alexis: Si tu regroupes ce qui a trait au form au même endroit (bas de page dans le code), tu peux le servir hors cache, c'est pas génant avec Contenu + commentaires en cache
Je pense que memcached vaut mieux que qqchose basé sur les fichiers (qui font des IO disques) : sur ADNPC le cache est encore en file, je vais le passer en memcached comme j'ai fait pour Fréquence News (un copaing de geekomatic ;-)
Je me donne 2Go de RAM pour memcached (sur 8Go), c'est acceptable et ça consomme pas d'accès disque spécifique (nettement plus rapide)
Poster un nouveau commentaire