I miei utenti vedono timeout di richieste occasionali su Heroku. Sfortunatamente non riesco a riprodurli costantemente, il che li rende davvero difficili da debugare. Ci sono molte opportunità per migliorare le prestazioni, ad es. riducendo l'enorme numero di query di database per richiesta e aggiungendo altro caching, ma senza il profiling che è una soluzione al buio.Come silenziare i timeout H12 incoerenti su Heroku
Secondo le nostre analisi New Relic, molte richieste richiedono tra 1 e 5 secondi sul server. So che è troppo lento, ma non è vicino ai 30 secondi necessari per il timeout.
La scheda di errore su New Relic mostra diverse query di database in cui si verifica il timeout, ma queste non sono query particolarmente lente e possono essere query diverse per ogni arresto anomalo. Anche per lo stesso URL a volte lo fa e a volte non mostra una query del database.
Come scoprire che cosa succede in questi casi particolari? Per esempio. come vedo quanto tempo è stato speso nel database quando si è verificato il timeout, a differenza del tempo che trascorre nel database quando non ci sono errori?
Un'ipotesi che ho è che il database viene bloccato in alcuni casi; forse una combinazione di lettura e scrittura.
Hai visto i registri?La prossima volta che si verifica il problema, vai immediatamente al tuo prompt dei comandi e inserisci "registri heroku". La registrazione dei log dall'errore ci aiuterà a risolvere il problema. –
@BrianPetro Ho i log, ma sono diversi per ogni caso - anche sulla stessa pagina - perché termina in un posto diverso tutto il tempo. Ecco perché sto cercando un modo più generico per eseguire il debug di questo. –
Aggiorna il post con alcuni registri o il codice più pertinente. Altrimenti temo di non poter essere di grande aiuto. –