Ho un controller che restituisce JSON o XML da una query relazionale abbastanza complessa con qualche logica del controller.Rails - Tempo completato per una richiesta significativamente superiore rispetto ai tempi di visualizzazione e DB
Mi sono sintonizzato sul lato DB perfezionando la mia query e assicurandomi che i miei indici siano corretti per la mia query.
Nel mio registro vedo articoli come questo:
Completed in 740ms (View: 1, DB: 50)
Quindi, se ho capito bene questo significa che la vista ha preso 1 secondo per il rendering e la query DB era 50ms. È tutto il tempo rimanente nel controller? Ho provato a bypassare la logica del mio controller e ho lasciato il mio to_json e to_xml lì ed è altrettanto lento. Come punto di riferimento il mio set di risultati JSON medio restituito è 168k.
Ci sono altri passaggi che vanno al completamento in tempo? Include il tempo fino all'ultimo byte per il trasferimento di rete?
Aggiornamento: ho avvolto varie parti del mio controller in blocchi di benchmarking:
self.class.benchmark("Active Record Find") do
#my query here
end
Quello che ho trovato è che anche se la linea di log dice DB: 50 mio record attivo ritrovamento sta prendendo la quasi totalità del tempo rimanente. Così ora sono confuso su cosa significhi quel numero di DB e perché la linea di riferimento dirà ~ 600ms ma il DB: il tempo sarà ~ 50.
Grazie
si prega di inviare le query e la logica di controllo – jschorr
Cercavi 1ms per la vista per rendere ? – lulalala