Ho la funzione lambda e la tabella db dinamo nella stessa regione (us-east-1). In funzione lambda eseguo molto semplice query:Richieste molto lente a dynamodb dalla funzione lambda
params =
TableName: 'users'
Item:
email:
S: event.body.email
ConditionExpression: 'attribute_not_exists (email)'
dynamodb.putItem(params, context.done)
Ci sono solo poche righe nella tabella DynamoDB, non c'è tasto cancelletto su e-mail e throughtputs di lettura/scrittura sono impostate per 5/5.
La funzione Lambda è in ~ 4 secondi ... È molto lenta. Sto facendo qualcosa di sbagliato?
ho provato la mia funzione con differenti impostazioni di memoria per la funzione lambda (è stato impostato a 128 MB in precedenza):
- 256mb => ~ 2000ms
- 512MB => ~ 1000ms
- 1024MB => ~ 500ms
- 1536mb => ~ 300ms
Sembra quindi che il tempo di risposta dipenda da 1-1 sulla memoria (beh, in effetti, sulla capacità di calcolo quando AWS lo scala insieme alla memoria). Eppure è pazzesco perché per rendere molto semplice l'API REST devo impostare la memoria 1536mb per renderla "reattiva" mentre il mio programma usa 17mb!
Hmm d'altra parte ho calcolato che costerà:
- 8,32 $ per 1 milione 4000ms richieste utilizzando 128MB di memoria
- 10.004 $ per 1 milione 300ms richieste utilizzando la memoria 1536mb
quindi non è così male immagino ...
Sei sicuro che non stai facendo altro nella tua funzione Lambda? La semplice chiamata JS non dovrebbe richiedere molta memoria e non dovrebbe richiedere molto tempo. – Guy
Solo per comparazione, che tipo di prestazioni ottieni se premi SimpleDB? –