2015-06-27 14 views
5

Stiamo riscontrando problemi con l'app Rails su Heroku sotto carico dove l'accodamento delle richieste (come riportato da New Relic) aumenta drammaticamente, nonostante l'utilizzo della CPU sia ben al di sotto del 100% e l'utilizzo della memoria sia ben dentro la capacità dei dynos.Big Queue Queue Time per l'app Rails su Heroku

I luoghi in cui ho pensato di cercare i problemi a questo punto sono la contesa di risorse (ad esempio connessioni al database) e il blocco in attesa di risposte da servizi esterni.

Sto cercando aiuto su come affrontare l'ordinamento del problema. A parte le due cose che ho menzionato, cos'altro vorresti cercare? Quali strumenti useresti per ottenere i dati e dare un senso a questo?

Grazie per eventuali suggerimenti.

+0

Che tipo di attività stai ricevendo (utenti concorrenti)? Qualche errore nei file di registro? – InbetweenWeekends

+0

Ad esempio, durante un test di caricamento in precedenza oggi, eseguito per 10 minuti a 600 rpm (100 utenti che eseguono richieste ogni 10 secondi), l'utilizzo della cpu ha raggiunto solo il 52%, mentre l'accodamento della richiesta ha raggiunto 3260 ms per richiesta su un totale di 4000 ms per richiesta includendo middleware, Ruby e pg. 105 delle risposte hanno ottenuto 503. Non c'erano errori nei log, a parte quelli. – potter

+0

Questo sembrerà molto vago, ma potrebbe essere un numero qualsiasi di cose. Come forse saprai, i 503 possono derivare da specifiche server scadenti, troppe connessioni simultanee, attività a lunga esecuzione ... ma questi sono alcuni punti da cui iniziare. Non hai specificato la tua piattaforma server, ma (supponendo che non vi siano problemi legati al codice) potresti voler iniziare a cercare problemi specifici del sistema operativo. – InbetweenWeekends

risposta

0

WebBrick è l'impostazione predefinita per le app Rails ed è un server a thread singolo, il che significa che qualsiasi richiesta proveniente da utenti con connessioni scadenti farà probabilmente in coda le richieste in attesa che l'utente con la connessione lenta scarichi la richiesta. Se non stai usando Puma o Phusion Passenger, probabilmente continuerai a vedere questo problema.

+0

Vedere questo link per riferimento: https://www.speedshop.co/2015/07/29/scaling-ruby-apps-to-1000-rpm.html –