Annuale Paga annualmente e ottieni 2 mesi gratis su ogni piano a pagamento. Vedi i piani
Accedi Inizia gratis

Tre pagine al secondo

La mattina del 22 settembre torun.ai ha cominciato ad arrancare. Una fattoria di browser automatici, più di duemila indirizzi in tre quarti d'ora, chiedeva le nostre pagine pubbliche una alla volta, e nel minuto peggiore…

La mattina del 22 settembre torun.ai ha cominciato ad arrancare. Una fattoria di browser automatici, più di duemila indirizzi in tre quarti d'ora, chiedeva le nostre pagine pubbliche una alla volta, e nel minuto peggiore arrivava a circa tre pagine al secondo. Un sito dovrebbe reggerlo senza battere ciglio. Il nostro no: nella fascia più carica oltre un quarto delle richieste ha impiegato più di trenta secondi, e centinaia di visitatori hanno rinunciato prima che la pagina arrivasse.

Non il carico che pensavamo

I sospettati ovvi erano il crawler e il processore. Nessuno dei due ha retto. Riproducendo le stesse tre pagine al secondo su una copia del sito, questa ha tenuto meno di un minuto e poi non ha più completato nulla. L'uso del processore è sceso dal 60 per cento all'1 mentre i thread salivano da 12 a 166. Un server sovraccarico lavora di più; questo aspettava.

Un andata e ritorno per ogni parola

Osservare il server di cache durante una sola pagina ha mostrato cosa aspettava. Una pagina gli inviava 585 comandi, e 428 erano una stessa richiesta e il suo rinnovo, ripetuti: una tabella di traduzioni che, per il nostro sito, è vuota. Ogni testo tradotto della pagina, e una pagina ne ha centinaia, la richiedeva di nuovo, e ogni richiesta teneva occupato un thread finché non arrivava la risposta. A tre pagine al secondo i thread sono finiti, e tutto si è messo in coda dietro di loro.

La correzione, e un limite

Ora quelle richieste vengono servite dalla memoria per un minuto alla volta, recuperate una sola volta alla scadenza e svuotate sul server che modifica una traduzione. La stessa pagina ora invia 31 comandi invece di 585. Abbiamo anche messo un limite davanti alla generazione delle pagine: si genera un numero fisso di pagine alla volta, una breve coda attende, e tutto ciò che va oltre riceve subito un «riprova tra un momento» invece di rallentare ogni pagina.

Misurato in produzione

Dopo il rilascio del 23 settembre abbiamo misurato di nuovo il sito in produzione. La pagina mediana si genera in 42 millisecondi, contro 249, e la più lenta su venti in 72 millisecondi, contro quasi due secondi. La richiesta che partiva 214 volte per pagina ora parte una volta.

La lezione che abbiamo annotato è semplice: un dato di capacità è una misura, non una convinzione. Non avevamo mai provato quanto reggesse il sito pubblico. Ora lo abbiamo fatto, e lo rifaremo prima di dichiarare un numero.

Condividi LinkedIn X E-mail
Provalo sul tuo lavoroOgni risposta mostra quanto è costata. Inizia con il piano gratuito. Inizia gratis
Ricevi aggiornamenti sul prodotto, non rumore Nuovi modelli, funzionalità e novità del changelog: una breve email solo quando qualcosa esce davvero.
Iscrivendoti accetti di ricevere le e-mail di ToRun sulle novità del prodotto. Puoi annullare l'iscrizione in qualsiasi momento. Informativa sulla privacy