Ujutro 22. rujna torun.ai je puzao. Farma automatiziranih preglednika, više od dvije tisuće adresa u tri četvrt sata, tražila je naše javne stranice jednu po jednu, a u najgoroj minuti bilo je to oko tri stranice u sekundi. Web-stranica bi to trebala izdržati bez treptaja. Naša nije: u najopterećenijem razdoblju više od četvrtine zahtjeva trajalo je dulje od trideset sekundi, a stotine posjetitelja odustale su prije nego što je stranica stigla.
Nije to bilo opterećenje koje smo očekivali
Očiti osumnjičenici bili su crawler i procesor. Nijedan se nije potvrdio. Kad smo iste tri stranice u sekundi ponovili na kopiji web-stranice, izdržala je manje od minute, a zatim više ništa nije dovršila. Iskorištenost procesora pala je sa 60 posto na 1, dok je broj niti porastao s 12 na 166. Preopterećeni poslužitelj radi više; ovaj je čekao.
Put tamo i natrag za svaku riječ
Promatranje poslužitelja predmemorije tijekom jedne stranice pokazalo je što čeka. Jedna stranica poslala mu je 585 naredbi, a 428 od njih bio je jedan te isti upit i njegovo osvježavanje, iznova: tablica prijevoda koja je za našu web-stranicu prazna. Svaki prevedeni tekst na stranici, a stranica ih ima stotine, ponovno ju je tražio, i svaki je zahtjev držao nit dok ne stigne odgovor. Pri tri stranice u sekundi niti su se potrošile i sve je stalo u red iza njih.
Ispravak i ograničenje
Ti se upiti sada poslužuju iz memorije po minutu, nakon isteka dohvaćaju se samo jednom i brišu se na poslužitelju koji mijenja prijevod. Ista stranica sada šalje 31 naredbu umjesto 585. Postavili smo i ograničenje ispred izrade stranica: istodobno se izrađuje stalan broj stranica, čeka kratak red, a sve preko toga odmah dobiva „pokušajte ponovno za trenutak” umjesto da uspori svaku stranicu.
Izmjereno u produkciji
Nakon izdanja 23. rujna ponovno smo izmjerili živu web-stranicu. Medijan stranice nastaje za 42 milisekunde umjesto 249, a najsporija od dvadeset za 72 milisekunde umjesto gotovo dvije sekunde. Upit koji se izvodio 214 puta po stranici sada se izvodi jednom.
Pouka koju smo zapisali jednostavna je: podatak o kapacitetu je mjerenje, a ne uvjerenje. Nikad nismo testirali što javna web-stranica može podnijeti. Sada jesmo, i testirat ćemo ponovno prije nego što navedemo brojku.