În dimineața de 22 septembrie, torun.ai abia se mai mișca. O fermă de browsere automate, peste două mii de adrese în trei sferturi de oră, cerea paginile noastre publice una câte una, iar în cel mai rău minut era vorba de circa trei pagini pe secundă. Un site ar trebui să ducă asta fără să clipească. Al nostru nu a dus: în intervalul cel mai aglomerat, peste un sfert dintre cereri au durat mai mult de treizeci de secunde, iar sute de vizitatori au renunțat înainte să apară pagina.
Nu era încărcarea pe care o credeam
Suspecții evidenți erau crawlerul și procesorul. Niciunul nu s-a confirmat. Când am redat aceleași trei pagini pe secundă pe o copie a site-ului, a rezistat mai puțin de un minut, apoi n-a mai finalizat nimic. Utilizarea procesorului a scăzut de la 60 la sută la 1, în timp ce numărul de fire a urcat de la 12 la 166. Un server supraîncărcat lucrează mai mult; acesta aștepta.
Un drum dus-întors pentru fiecare cuvânt
Urmărirea serverului de cache în timpul unei singure pagini a arătat ce aștepta. O pagină îi trimitea 585 de comenzi, iar 428 dintre ele erau aceeași interogare și reîmprospătarea ei, repetate: un tabel de traduceri care, pentru site-ul nostru, e gol. Fiecare text tradus de pe pagină, iar o pagină are sute, îl cerea din nou, și fiecare cerere ținea ocupat un fir până venea răspunsul. La trei pagini pe secundă firele s-au terminat și totul s-a pus la coadă în spatele lor.
Corectura și o limită
Aceste interogări primesc acum răspuns din memorie câte un minut, sunt aduse o singură dată la expirare și șterse pe serverul care modifică o traducere. Aceeași pagină trimite acum 31 de comenzi în loc de 585. Am pus și o limită în fața generării paginilor: se generează simultan un număr fix de pagini, o coadă scurtă așteaptă, iar tot ce depășește primește imediat un „încercați din nou peste câteva momente” în loc să încetinească toate paginile.
Măsurat în producție
După lansarea din 23 septembrie am măsurat din nou site-ul live. Pagina mediană se generează în 42 de milisecunde, față de 249, iar cea mai lentă din douăzeci în 72 de milisecunde, față de aproape două secunde. Interogarea care rula de 214 ori pe pagină rulează acum o dată.
Lecția pe care am notat-o e simplă: o cifră de capacitate este o măsurătoare, nu o convingere. Nu testaserăm niciodată cât duce site-ul public. Acum am testat și vom testa din nou înainte să dăm o cifră.