déc 24

Toutes les personnes ayant contribué à ce blog en cette année 2010 (Fabrice, Ryan, Aymeric) se joignent à moi (Philippe) pour vous souhaiter d’excellentes fêtes de fin d’année !

Modern Glass Christmas Tree

écrit par Philippe Humeau

déc 15


After the success of last semester MDA (Magento Darwin Awards), we decided to publish the 2010 update.

The concept, for the new comers, is to elect the best « worst idea », the most unpredictable « victory of mind over matter », simply put, the best of the best failures we had to handle at our support desk. This is my community blog but I’m the CEO of a European hosting company called NBS System (our site will soon be available in English also).

We are currently handling managed servers in the E-commerce field, mainly for Magento. We are the biggest hosting company around Magento hosting in France with >400 hosted sites, so we have a lot, a very big lot of support requests and some are just « too big to be silently classified ».

As everyone, we also make mistakes, so we have our own entries in this MDA! One more thing, we never laugh with a bad spirit, we laugh because this is a way to lower the pressure, it’s never made in bad spirit, to « taunt » people or the make fun of them, it’s just for everyone to enjoy this little bestof ! As a matter of fact, in this issue, we ranked second, lucky us…

The concept is inspired of the world renowned « Darwin Award » which elects the people who were kind enough to clear the human gene pool from their flawed genome by dying in the most stupid possible way.

Enough of introduction, let’s make it directly to the Winners; here are the Winter 2010 “Magento Darwin Awards”!

Rank 1: Virtualization is Evil

Customer’s Tech Team: Boss, we should consider moving this App to a Virtual Machine.
Customer’s Boss: No. Virtualization consumes a lot of resources. We’ll use Cloud instead.
Customer’s Tech Team: But I think that Cloud is based on virt…
Customer’s Boss: I don’t care about your thinking’s, I said we’ll do Cloud!

/* Later */

Customer’s Tech Team: Okay, our boss had a brilliant idea; we won’t take the Virtual Machine but a Cloud instance.
Tech Team: ??? But the Cloud is…
Customer’s Tech Team: I know… But my boss doesn’t and, in a way, I think this is better like this. I bet he has seen a Microsoft ad yesterday…
Tech Team: So be it!

Rank 2: SEO Genius

As we previously did, I’d like to include our own, subtle but yet stupid mistakes. Everyone has failures and even with the best procedures good will and attention, well, you know the deal, shit happens…

SEO Provider: Hi Philippe. I’ve been doing a quick check around your site (www.nbs-system.com) and found some pretty unexpected results in your SEO.
Me: Like what?
SEO Provider: Have you made any special effort to be ranked on « expresso coffee machine » or « vacuum cleaner robot »…?
Me: Well not really, beside this is not really related to hosting or security, so… no.
SEO Provider: Well now you are ranked 3 on this! Cheers. With a sub domain being [test-customer].nbs-test.nbs-system.com
Me: No… Don’t tell me theses sub domains are publicly available for the bots?
SEO Provider: Okay, I won’t tell you.
Me: Damn, I think we should also be positioned on high heels, sex toys and running shoes since those are the customers actually using the test domain.
SEO Provider: Yep. But up to my statistics, you really are losing positions on sex toys…
Me: OMG…!

Rank 3: Wake me up!

Customer: Your 24×7 support service wasn’t reachable this morning at 6h50 am. I’m paying you every month for a « so called » 24×7 support and your guys aren’t reachable, shame on you.
Me: Well, let me dig into this problem and I’ll find the one responsible for this very sensible mistake and get back to you.
Customer: You’d better…

/* Later on */

Me: Guyz, give me your support cellphone logs. I want to know if someone missed a call this morning at 6h50 am, big issue there.
Support team: Okay boss, here is mine, pay a visit to the log, I never ever missed a call.
Me: I look in the log book and… There’s no incoming call at 6h50… I take a picture of the cellphone screen and send it back to the customer with some nice word around.

/* Later on */

Customer’s tech team member: I double checked my phone log and last monday at 6h50 am, I dialed 06.xx.77.xx.63 instead of your number 06.xx.77.xx.93. So yes, I didn’t had someone of your service but… It was barely undetectable on my end since the guy told me « Yes ? », I explained the problem about our servers being overloaded during 1 minute and a half and in the end he said « Yes no problem, I’ll take of that » !!! Sorry about that…

What happens in the JVM stays in the JVM

Customer: I had awful sales This Week End.
Support team: Well, we can’t really help in this do we ?
Customer: Oh yes you can, there’s only 3172 products available instead of 1.4 Millions Sku’s.
Support team: This can explain the sales were “limited”, let me have a look…
Support team: After we discussed a bit with you web agency, we found that SOLR servlet died while indexing your catalog, after just 3172 products were indexed.
Customer: And you didn’t detected anything ?
Support team: Well the JVM daemon was still there, and as we use to say “what happens in the JVM stays in the JVM”, so no, we weren’t able to see the problem.
Customer: Any way we can spot this for later safety?
Support team: Your web agency provided a test code to run with the crons to check if the servlet are healthy or not.


Customer: Is there a way on your systems to get informations like the one phpinfo() could provide ?
Support team: Well you can execute PHP on the servers so why not use phpinfo() ?
Customer: Oh, yes, brilliant… welllllll, sorry…

Wait, I’m looking for a solution…

Support team rookie: We didn’t found the problem yet but we are still looking for it and we’ll get back to you as soon as there is a solution to the problem you reported.
Support team Boss: Just tell me you didn’t send that mail to the customer…

Look, dady is on TV!

Customer (on a VPS server): I’m proud to announce I’ll be on a national TV show!
Support team: Well, nice success, are you planning to talk about your site?
Customer: Of course I will, this will attract a lot of customer to my site?
Support team: And what are you considering to handle the hundreds of thousands hits that your site will take ?
Customer: Uh why ?
Support team: Because you will get more that 50 times normal trafic so your server won’t take it?
Customer: No problem, do what’s needed, I’ll pay.
Support team: When is the show exactly?
Customer: In one hour and a half…
Support team: Praying will give you the best results!

My flash is beautiful

Support team: 4 films of 10 Mo per film streaming in Flash on the homepage is a lot.
Customer: Well this is not much actually, the advertising company made its best to lower the size of it.
Support team: Well compared to the average 1.8 Mo average surf session, this is still quite a sensible amount of data.
Customer: Could this explain our bandwidth consumption?
Support team: This is a serious lead J

We are hosting the NASA (returns)

Support team: Is this site really taking 300 000 Unique visitor per day?
Customer: No.
Support team: Well it seems the reverse proxy is counting this precise amount and your 4th web server just died under a 280 load… (12 cores => 12 is 100 % load without a process waiting to be handled). The second one is responding every odd minute.
Customer: Okay, I think someone made a small mistake in retargeting campaign, we take hits for anything. People are looking for chainsaws and get our retargeting ads about underwear.
Support team: Perhaps the retargeting algorithm thought that people usually interested in chainsaws leaving a site usually by underwear?
Customer: Sure dude, let me just hang the retargeting company, consider this a preemptive move.

700 000 mails sent for only 80 needed?

Support team: One of the mailer is dying!
Support team Boss: Why is it overloaded?
Support team: Someone is trying to send 700 000 mails…
Support team Boss: Shoot the queue, drop the incoming connections from this customer on the TCP/25, call Yoda and tell him to send reinforcements.
Support team: Ok Boss!

/* Later */

Support team (to customer): Why the hell did your site tried to send 700 000 mails in one hour?
Customer: I created a loop in PHP to send 80 mails. It was supposed to parse a file and send the mail to each line. I guess it failed…
Support team: In a way, yes… At least did the 80 persons got their mails?
Customer: No.
Support team: Failed. You’ll probably be in the MDA 2010 with this one.
Customer: Fair enough…

We commit to production this Week End

Customer: We will commit our preproduction to production this WE.
Support team Boss: No way. It will fail, you doesn’t have the 24/7 support option and your developers aren’t there, this is plain suicide.
Customer: No no, not a problem it’s just dropping my existing catalog and importing new products, I can handle that alone and beside, the dev team left me a script.
Support team Boss: This script has been tested?
Customer: I guess yes.
Support team Boss: No way.

/* Later */

Customer: The process failed, it’s Saturday and I can’t do anything, can you help?
Support team: Did someone told you that Week end migrations generally fail?
Customer: Well, yes…
Support team: This person was wrong, the correct sentence was « It always failllll the week end ».
Customer: So what do we do?
Support team: Well, we’ll try to fix that for you, but you’ll be billed.

(PS : My wife hate you, but this is only because she doesn’t like to be awaken at 4 am, nothing personal)

AND… Medal of honnor: The Slider O’ Death returns!

Live, in production, even more beautiful than the « project » which won the previous award.

(Excited) Customer: Hi NBS System team, I’d like to inform you that we’ll be on TV tomorrow!
Support team: Well glad you made it to people screens! We’ll watch your servers closely this evening and provide additional boosters if needed.

/* No…. come on, as usual, this was not the way things happened. What really happened */

(Annoyed) Customer: Hi, my servers are very very very slow.
Support team: I’ll have a look ASAP.

/* support guy working */

Support team: Well I found a hint. Part of the problem is that you have a lot of incoming connections, another part of the problem is that your site is consuming way more resources than before, especially the part called « Design your own xxxx ». Does those inputs help you, can you provide me with more information regarding this?

(Guilty voice) Customer:
Well, perhaps we should have informed you that we were on a major TV show tonight?

Support team:
Noooooo… this is not like if those nasty little TV appearance were quadrupling your incoming traffic, no why bother with those details? Sill this only explains about the overload, we will start a dozen virtual machines and your site will be taking the load in 5 to 7 minutes. But why is it consuming 10 times more resources, especially in the databases requests, that have made a peak to … WTF? …  37 000 SQL requests per seconds???

(still feeling guilty voice) Customer:
I don’t really know what you’re talking about, I’m not IT.
Support team: Did you put any new stuff online, like a new feature?
(Proud) Customer: Yes a very nice feature where you can design your own [customer_product].
Support team: Is it something where you can choose among ten types, 8 different sizes, 6 shapes, 10 colors and so on?
(Very proud) Customer: Yes, and it show you live your product among our full catalog of hundred thousands of articles.
Support team: OMG, The Slider O’ Death finally got its way online!!!

For those who didn’t know what the SOD concept was, they are the winner of last Magento darwin awards contest. You can find the full review of this wonderful concept here. Simply put, this is a way to interrogate the DB live, using AJAX requests, as soon as you move a cursor on a slider. 10 position, 10 colors, 6 shapes, etc… 10*10*6*8*… = thousands of requests per second, move your cursor faster, it makes thousands of requests per seconds.

You know, those little sliders, looking so cute (and loading live the products):


NBS System Support team wish you a very good Xmas, wonderful end of year sales. We’d like to thanks every support cell around the world and especially the hoster’s one and Magento’s one, Cheers guy !

Emile aka « Imil », aka The_Boss

Photo Emile

Adrien aka « Ze »

Head with interrogation point. The intensity of the doubt.

Denis aka « Jawa »


Christophe aka « Chris »


Guillaume aka « Champitoad »


Florent aka « Flo »

Head with interrogation point. The intensity of the doubt.

écrit par Philippe Humeau \\ tags: , , , ,

oct 10


écrit par Ryan

mai 20

Chers lecteurs (sisi y’en a encore, j’ai les stats [superemotions file="/category/fun/icon_redface.gif" title="Redfaced / Embarassed"]),

Voici bien longtemps que je n’ai pas eu le temps de poster quoique ce soit. Mes confrères bloggers me l’ont tous dit, « un blog, c’est une discipline, de la régularité, un contenu à date fixe »…

Oui mais voila j’ai eu le site de NBS System à refaire et Bargento 4 à organiser. Cependant, les excuses ne servent à rien, le mieux est d’aller de l’avant.

Alors voila un billet, en attendant de poster pas mal de « lourd » dans les semaines à venir.

Pour se remettre en selle, un petit « bestof » des meilleurs gags sous Magento auxquels nous avons dû faire face récemment ! Avec plus de 200 sites hébergés, on a eu quelques frayeurs et quelques moments de solitudes, je voulais vous faire profiter des intégrations les plus pénibles, des dialogues les plus sourds, des propositions les plus farfelues.

Bref, toute mon équipe se joint à moi pour vous faire part de nos tranches de vie d’hébergeurs.

Nous rions de bon cœur, jamais méchamment car chaque travail a ses difficultés et l’anodin devient le calvaire des autres sans que ce soit fait exprès (c’est réciproque d’ailleurs) !

Voici le palmarès :

Idée la plus folle en intégration, le SDLM (« Le Slider De La Mort »)

Le concept est brillant, simple, élégant. Une interface Web, 5 curseurs à déplacer sur des positions.

Un pour le produit, un pour la couleur, un pour la taille, un pour la forme etc… Quand un internaute déplace un des curseurs, on charge les produits qui vont bien en fonction de la position des différents curseurs, par exemple pantalon, 60, noir, jean, femme, etc.

15 produits * 6 tailles * 12 couleurs * 6 formes * 6 typologies (femme – homme – enfant H/F – adolescent H/F)  = 38 880 requêtes en base de données à chaque déplacement d’un curseur… Bien sur on pourrait optimiser et stocker un résultat de requête, générer un cache ou autre mais le développeur n’avait pas vu les choses sous cet angle… Tout cela part avec une requête Ajax et on attend la réponse pour peupler la page.

Maintenant, on prend sa souris et on bouge son curseur de gauche à droite bien rapidement. Et hop, un dénis de service à coup de millions de requêtes SQL dans la base de données.

Et paf le serveur.

La surenchère au SDLM : l’OMODLM (« on mouse over de la mort »)

Ils ont eu l’idée après ceux du slider de la mort alors le résultat est plus fort mais moins de mérite sur le concept original :)

Bonne note cependant car la version est très évoluée, on a plus besoin de cliquer ou de drag & droper un curseur, passer au dessus des catégories de produit suffit à créer une charge relativement indécente de travail pour les serveurs.

Un confort d’utilisation indéniable somme toute ! Avec le OMODLM (On Mouse Over De La Mort), le déni de service est au bout de votre pointeur, 10 allers-retours bien rapide sur les catégories produit et hop, 200 produits chargé par catégories, 10 catégories, 10 allers-retours du mulot et… et… ben des requêtes javascript en chaine qui font 20 000 requêtes de produits soit en requêtes SQL, facilement le triple.

Et paf le serveur.

La grande méchante Cron : 2 Go c’est trop peu !

Ah les crons, un grand plaisir régulier, qui ne cesse de nous faire trembler.

La plupart du temps ce sont des imports automatiques de produits ou ce type de traitements. Les scripts consomment de plus en plus de RAM, ne trouve jamais leur conditions de sortie et on se retrouve avec un bon gros PH qui pèse 1 ou 2 Go en mémoire et qui continu à manger des ressources sans jamais sortir.

Que du bonheur…

Alors l’idée c’est qu’on a un nombre de tickets impressionnants qui demandent à passer la PHP memory limit à 2 Go voir plus, juste pour laisser la Cron_qui_tue en PHP finir son travail. Cette limite étant appliquée à tous les processus PHP, ca peut très vite, très très vite, dégénérer.

Alors non, on ne passe pas à la limite à 2 Go, on optimise son code ou on gère différemment.

L’auto dérision est un sport, alors nous aussi témoignons !

On est pas plus parfait que les autres alors évidemment on en fait une ou deux.

On utilise Sysfence pour vérifier si certains processus ne deviennent trop gourmands, risquant ainsi de tuer la machine. Ce sysfence vérifie si la machine Swap (et donc manque de RAM) et si c’est le cas, il redémarre le service consommateur.

Sauf que le service en question (apache en l’occurrence) quand on le redémarre, cela ne libère instantanément les ressources allouée, donc le Swap est toujours utilisé et sysfence redémarre le service, et encore, et encore et encore.

Et le site Web, il clignote. (Une temporisation avant de relancer le démon, le temps de laisser le swap se vider, à résolu le problème)

My Java is beautiful

Alors ce n’est pas directement du Magento mais un service connexe de catalogue (comme un catalogue papier dont on tourne les pages). Le moteur de catalogue est assez évolué et permet des trucs totalement inutiles, comme par exemple tourner le catalogue de 3° vers la gauche…

Enfin passons. Il a « l’avantage » de resizer les images à l’affichage donc si on a du 800*600 c’est à la bonne taille et si on est en 1200*1024 etc. Sauf que plutot que de contraindre les images par le CSS ou même de stocker 3/4 versions de tailles différentes, il resize à chaque fois, pour chaque visiteurs et stock tout dans la JVM (oui c’est du Java, c’est plus drôle).

Résultat, au bout de 12H d’utilisation à 10 000 visiteurs, 16 Go de RAM consommés et 86 Go de Swap…

Alors on force la désalocation, le garbage collecting avec des paramètres passé à la JVM mais rien y fait. Alors on tue le démon à intervalle régulier, histoire de pas saturer les deux serveurs de catalogues.

Le superviseur

C’est l’histoire d’un programmeur qui veut faire un outil de supervision de la charge des deux serveurs frontaux de son client. Nos serveurs se portent bien mais il souhaite pouvoir vérifier si un de ses scripts exécuter régulièrement ne prend pas trop de CPU / RAM et sinon le killer.

Bon le script en question consomme effectivement pas mal de ressource alors il code un démon en PHP pour vérifier la charge des serveurs afin de tuer le script si besoin. Seul soucis, il exécute la routine de vérification de la charge avec du PHP, connu pour sa légèreté (5 Mo en RAM pour vérifier la charge alors qu’un démon en C prend 5 Ko). Enfin seul soucis pas vraiment, dans le but de bien faire et d’être réactif, il lance son check toutes les 35 millisecondes… Un script PHP qui a lui seul met plus de 35 ms à s’exécuter.

Et paf le serveur…

My slave is beautiful

Allo ? Mme ……. de la société …… (grand compte).

Oui bonjour, que puis-je pour vous ?

[...] je souhaiterai savoir à quelle date vous pourriez intervenir pour venir configurer nos serveurs ? [...]

Ah, nous ne faisons pas ce type de prestation madame, nous optimisons les serveurs de nos clients et les nôtres mais pas ceux de votre infogérant actuel. (qui ne travail pas avec/sur Magento)

Ah mais attendez, on vous paye. 450 €, par jour ! Par contre il faut être là dès demain matin et les 5 prochains jours d’affilé.

Je me suis mal fait comprendre, cela ne fait pas partie de nos prestations madame.

De plus un expert Magento, peut importe qu’il soit développeur ou infogérant, ca ne coûte pas ce tarif là. Même si nous faisions cela, on a déjà pas mal de travail on ne peut pas se libérer 5 jours d’affilé du jour au lendemain.

Écoutez, je vois que vous ne faites aucun effort, je pense que nous n’allons pas travailler ensemble…

Je vous poste mon site ?

Alors c’est l’histoire d’un mec, il veut mettre son site Magento en ligne. Jusqu’ici, rien d’original. Au bout de 4H, il appel le support et annonce :

Votre système plante au bout de 5 Mo de transfert, je n’arrive pas à mettre le site de mon client en ligne.

Vous utilisez quel protocole ? FTP, SFTP, SCP ou SVN pour faire cette mise en ligne ?

Écoutez, je vous dis que ca plante au bout de 5 Mo, ce n’est pas une question de protocole.

Ca pourrait nous aider à trouver le soucis, sait-on jamais. Quel protocole utilisez-vous ?

J’utilise OTRS.

Notre interface de déclaration de tickets pour le support niveau 1 ?


Mais monsieur, le champ upload d’OTRS sert a nous envoyer une copie d’écran, pas le site, il faut utiliser les accès que l’on vous a envoyé SFTP ou SVN par exemple.

Les accès quoi ?

Mention spéciale du jury : Je SVN, tu SVN, il flingue le site…

C’est l’histoire d’une marque qui lance des ventes privées. Un jour, elle appelle sont intégrateur à J-20. « Tu peux me faire une ou deux modifs ? » , « pas de problème je te fais ca ». Les modifications sont mises en ligne, tout fonctionne. Le jour J c’est le drame.

  • 500 visiteurs simultanés, tout va bien
  • 1 000 visiteurs simultanés, tout va … curieusement… La charge monte… un peu trop vite
  • 1 500 visiteurs simultanés tout va plus du tout, serveurs couchés, médore tourne à un load de 70… Soit une surcharge colossale !

On cherche, on cherche, on cherche… Rien à faire les serveurs sont en débandade complète. Mais que se passe t’il ? Eh bien la Web Agency avait écrasé le fichier /var/www/eu/app/etc/use_cache.ser avec son propre fichier… Oui mais un développeur, lui, il coupe les caches pour voir ses modifications instantanément. Quand il publie son fichier use_cache.ser avec 6 cache sur 8 de désactivés, les serveurs sautent.

Ma page d’accueil est lente…

Alors, voyons voir, je prends mes 6000 produits, je code ma boucle, et pour chaque produit sur ma home, je lance ma fonction qui cherche dans les 6000 produits.

Mince, ça rame… Je ne comprends pas ?

écrit par Philippe Humeau

jan 31


Alors en préparant le lancement de ce blog, forcément on googlise un peu autour de soi et ? au surprise ? Aujourd’hui, samedi 31/01/09, 16h00, google bloque tous  les sites dans les résultats de recherche avec un lien « ce site risque d’endommager votre ordinateur ».

Gros gros craquage les gars là.
Le plus drôle ? Google se bloque lui même en expliquant que ses sites aussi ne sont pas sûrs !

Gros plantage chez Google...

Gros plantage chez Google...

Allez, vous aussi faites votre shoot d’écran collector, ca arrive pas tous les jours :)

Les explications ?

  • Ratage d’une mise en production ?
  • Hacking ?
  • Intoxication alimentaire des admins ?
  • Grosse paranoïa subite ?

Visiblement ca à commencé vers 15h30 et ca s’est finit vers 16h30…

Merci à LôLô pour l’information.

écrit par Philippe Humeau \\ tags: ,

déc 22

Elle est déjà surement connue de vous, je ne sais même pas qui féliciter pour ce bijou, mais ca :

just-for-funJ’adore :)

écrit par Philippe Humeau \\ tags: ,