Facebook legt zichzelf plat met DDoS-aanval

Sociaal netwerk Facebook heeft tweeënhalf uur platgelegen. Dit is de grootste storing in vier jaar tijd en de tweede in twee dagen.

"Facebook was down of onbereikbaar voor veel van jullie gedurende ongeveer 2,5 uur. Dit is de ergste storing die we hebben gehad in vier jaar, en we willen allereerst onze verontschuldigingen daarvoor aanbieden", meldt softwaredirecteur Robert Johnson op het bedrijfsblog. Toen de site weer up was, bleef die nog wel geruime tijd traag.

Foutcontrole zat fout

De oorzaak van de recordstoring is een interne wijziging die Facebook zelf heeft aangebracht in zijn ict-infrastructuur. Ironisch genoeg zat dat in verkeerde afhandeling van foutmeldingen. "Een geautomatiseerd systeem voor het verifiëren van configuratiewaardes heeft veel meer schade veroorzaakt dan dat het oploste."

Het doel van dat geautomatiseerde systeem is om te controleren op configuratie-instellingen die niet valide zijn in de cache van de Facebook-servers. Gedetecteerde niet-correcte waardes worden dan vervangen door valide instellingen, die worden opgehaald uit de 'persistent store' van Facebooks servers. Het bleek echter dat de 'persistent store' niet-valide instellingen bevatte, biecht Johnson op.

"We hebben een verandering aangebracht in de persistent copy van een configuratiewaarde, die werd geïnterpreteerd als niet-valide. Dit betekent dat elke clientapplicatie de ongeldige waarde zag en die probeerde te fixen." Voor elk van die reparatiepogingen is een database-query nodig, wat de geclusterde databaseservers van Facebook een stortvloed opleverde die ze niet aankonden. Johnson spreekt van honderdduizenden queries per seconde.

Zelfveroorzaakte DDoS

"En om het nog erger te maken: elke keer dat een client een foutmelding kreeg vanwege de query aan een van de databases interpreteerde de client dat weer als een ongeldige waarde, waarna het de daarmee overeen komende waarde in de cache wistte." Dat heeft ervoor gezorgd dat de zelfveroorzaakte DDoS-aanval van database-queries aanhield nádat het oorspronkelijke probleem was opgelost.

"Zolang de databases bleven fallen om sommige van de verzoeken te beantwoorden, bleven ze zelf maar meer verzoeken veroorzaken. We waren een feedback loop ingegaan die herstel van de databases niet toestond." De oplossing was pijnlijk, blogt Johnson: "We moesten al het verkeer naar dit database-cluster stopzetten, wat betekende dat we de site moesten uitzetten."

Opnieuw ontwerpen

Vervolgens is Facebook.com weer aangezet, waarbij het sociale netwerk geleidelijk aan weer meer bezoekers toeliet. Het foute foutcorrectiesysteem is uitgeschakeld. "We verkennen nieuwe ontwerpen voor dit configuratiesysteem, waarbij we ontwerppatronen volgen van andere systemen bij Facebook die meer elegant omgaan met feedback loops en tijdelijke pieken in het verkeer."

Bron: Webwereld.nl

Deel dit artikel
Voeg toe aan favorieten