Ma történt egy-két érdekes dolog a blog.hu háza táján. Kezdődött azzal, hogy biztonsági okokból megváltoztattuk az adatbázis elérést, ez élesítés körül okozott egy szűk félórás fennakadást, amely időszakban nem lehetett pl kommentelni, de gyors hegesztésekkel sikerült úrrá lenni a helyzeten. Robi ekkor közölte, hogy az igazi lehalás még csak ezután jön, mert élesít még mást is.
Azt hittük, viccel. Utóbb kiderült, nagyon is igaza lett.
A helyzet ugyanis az, hogy a blog.hu jelenleg elég intenzíven használ file cache-t. Robi szeretett volna betenni egy kivételt, tehát hogy legyen egy blog, ami sosem cachelődik. Megcsinálta, élesítette, két óráig látszólag minden rendben volt. Aztán elkezdett feltűnni hogy a frontend a terminálban egyre kevésbé reagál a billentyűleütésekre. Sikerült fellőni egy topot, ebből megtudtuk hogy a load meredeken nő. Eljutott az akkor all-time rekordnak számító 1000-es értékig, mire sikerült leállítani az apacheot. Ekkor lőttem ezt:
Rövidesen visszaált normális értékre minden, azt hittük, valami csak beakadt, ezután már jó lesz. Újraindítottuk az apacheot, újra elszállt, ezúttal meg se állt 1300-ig, mire sikerült megint lelőni.
Eddigre már körülbelül nyolcan (rendszergazdák, fejlesztők vegyesen) mással sem foglalkoztunk mint a hiba keresésével, röpködtek az ötletek, ráfogtuk logfeldolgozó scriptre, nfs-re, mysql watchdogra, mindenre. Végül kimerítettünk minden ötletet, elkezdtük nézegetni az elmúlt időszak svn changesetjeit, ekkor lettünk figyelmesek Robi commitjában arra, hogy a file cache-t meghatározó if-ben sikeresen == szerepel != helyett. Azaz Robi egy röpke mozdulattal kikapcsolta a file cache-t a blog.hu-n úgy ahogy van. Innen nézve viszont meglepő, hogy két óráig minden gond nélkül mentünk.
A tanulság tömören, képi formában összefoglalva Bandesz által:
És végül hogy ez milyen kihatással volt a rendelkezésreállásunkra:
(a nagy sárga csík az amikor először elvesztette a fonalat, a rózsaszín csíkok azok amikor leállítottuk az apache-ot)
Figyeljetek az egyenlőségjelekre!
Utolsó kommentek