2016-04-06 16 views
5

Sono curioso di sapere come il ridimensionamento funziona sulle funzioni di Azure in relazione all'output nel DB di documenti.DB di funzione e documento di Azure

Fondamentalmente cosa succede quando DB Document restituisce un 429 perché ho superato il mio throughput assegnato? Chiedo perché quando avevo il livello più basso di funzioni di Azure combinato con il livello più basso di Document DB e procedevo a chiamare la funzione 1000 volte in 20 secondi, vedevo solo 700-800 documenti effettivi inseriti nella mia raccolta di documenti. Quando ho ridimensionato il Document DB fino al massimo con lo stesso livello di funzione più basso, ho ricevuto solo 700-800 documenti nella mia raccolta doc db. Tuttavia quando ho ridimensionato la funzione fino al massimo con il documento db al massimo ottengo tutti i 1000. Quando rilascio doc db al minimo ho solo 300ish .... anche se sembra che abbia bloccato il documento db account e che sta ancora riprovando l'inserimento fino a quando non può riuscire.

Quindi sono solo confuso su questo è il ridimensionamento e se potessi ottenere alcune informazioni in modo da poter meglio ottimizzare vari aspetti della funzione o app.

risposta

6

Sì, al momento riprova con 429, in attesa del tempo suggerito secondo la risposta DocDB. Al momento non esiste un timeout assoluto, quindi i tentativi continueranno fino a quando non verranno superati (in questo caso sto verificando due volte se questo è il comportamento previsto).

Nel primo scenario, se si attende abbastanza a lungo per rimuovere l'acceleratore, alla fine si presenteranno tutti i 1000?

Mi piacerebbe provare a replicare questo: stai attaccando 1000 articoli in una coda prima di abilitare la funzione? O chiamandolo in un altro modo?

Il codice di tentativi specifica che si sta svolgendo è qui se siete curiosi: https://github.com/Azure/azure-webjobs-sdk-extensions/blob/master/src/WebJobs.Extensions.DocumentDB/DocumentDBUtility.cs#L36

+0

sto innescando la funzione tramite http poiché non credo service bus innesca in C# sono attualmente funzionante (anche se questo potrebbe essere cambiato poiché questo sta cambiando rapidamente al momento). Quindi faccio scattare tutti i 1000 tramite http, sto usando loader.io per fare ciò chiamando un endpoint web api all'interno del mio codice che a sua volta spara il post http per attivare la funzione. Il test loader.io è impostato per eseguire 50 richieste/sec per 20 secondi. – steveko23

+0

Non sono sicuro al 100% se la funzione alla fine finisce. Nel mio ultimo test non sembra che siano stati scritti altri dischi, ma stavo ancora ricevendo 429 quando ho provato ad interagire con la collezione doc db. Così ho cancellato l'intera collezione, l'ho ricreata e ho visto altri record scritti nella raccolta. Quindi sembra che stia ancora provando, ma sembrava anche che fosse in uno stato strano. – steveko23

+0

Bene, dopo un sacco di test oggi mi sono reso conto che ho rimosso il vero sonno da questo bit di codice nella mia ultima modifica: https://github.com/Azure/azure-webjobs-sdk-extensions/commit/d39943965d45038ebddc7d4a2d729beab8a678aC# diff-6f209fbf17e36efd4d9ebc6a285cc00cL69. Lo aggiusterò e aggiungerò alcuni test per verificare che non si ripetano. Scriverò di nuovo qui quando questa correzione sarà disponibile e proverò qualche altro test per assicurarmi che funzioni come prima. Grazie per aver portato questo! – brettsam

Problemi correlati