Ho incontrato una situazione in cui un loop infinito sul client sta bloccando il server Meteor. Il ciclo infinito è un bug che risolverò, e non l'argomento di questa domanda. La mia preoccupazione è che un utente malintenzionato possa creare il proprio loop infinito e mandare in crash il server Meteor.Come posso proteggere il mio server Meteor da un loop infinito sul client?
Il loop infinito in questione effettua ripetutamente chiamate a e Meteor.call(...)
. Sembra che queste richieste siano state accodate sul server fino al punto di inabilitazione, anche se l'intenzione del cliente era di abbandonarle. C'è un modo per dire al server che la richiesta è stata abbandonata e rimuoverla dalla coda?
Suppongo che questo non possa proteggere il server da un client che fa migliaia di richieste successive senza abbandonarle, in modo che la domanda sostituisca questa se qualcuno ha una risposta. Come posso limitare il numero di richieste che possono essere fatte da un singolo cliente?
In questi grafici APM, è possibile vedere come il ciclo infinito ha influito sulle prestazioni. L'ho iniziato verso le 13:17 e alle 13:25 l'app si è bloccata (terminata da Heroku per aver superato la sua quota di memoria).
Hai visto i pacchetti di limitazione/limitazione della velocità sull'atmosfera? https://atmospherejs.com/?q=limit –