Sto utilizzando Unicorn come app server per la mia app Rails e sto cercando di capire perché a volte a volte un ritardo non banale (> 5 secondi) tra l'inizio di una richiesta e quando raggiunge il mio controller.Rails Unicorn - Ritardo tra la richiesta iniziale e il controllore in arrivo
Questo è ciò che i miei production.log stampe fuori:
Started GET "/search/articles.json?q=mashable.com" for 138.7.7.33 at 2015-07-23 14:59:19 -0400**
Parameters: {"q"=>"mashable.com"}
Searching articles for keyword: mashable.com, format: json, Time: 2015-07-23 14:59:26 -0400
Avviso come ci sia un secondo di ritardo 7 tra iniziare: e "Ricerca articoli per parole chiave", che è la prima cosa che il metodo di controllo lo fa.
articles.json viene indirizzato al mio controller metodo "articoli" che si limita a questo, per ora:
def articles
format = params[:format]
keyword = params["q"]
Rails.logger.info "Searching articles for keyword: #{keyword}, format: #{format}, Time: #{Time.now.to_s}"
end
Questo è il mio routes.rb
MyApp::Application.routes.draw do
match '/search/articles' => 'search#articles'
#more routes here, but articles is the first route
end
Che cosa potrebbe causare questo ritardo? È perché un lavoratore Unicorn è occupato? È perché un lavoratore Unicorn sta prendendo troppa memoria che porta il sistema a essere lento?
Nota: non credo che il ritardo sia nel creare connessioni al database, ma potrei sbagliarmi. Il codice non ha bisogno di effettuare una chiamata al database, e le connessioni massime per il mio database sono 1000, e generalmente ci sono al massimo 1-2 connessioni.
potrebbe essere una miriade di ragioni - è necessario monitorare le risorse di sistema, nonché unicorno. Se nulla è a posto, aggiungere un agente newrelic potrebbe essere l'opzione più rapida/semplice –
Sta succedendo anche con Puma, Passenger ecc? – adamliesko
Che cosa dice l'ultima riga della richiesta GET, cioè quella che sais 'Completato 200 OK in 100 ms (Visualizzazioni: 50.0ms | ActiveRecord: 50.0ms) ' – amiuhle