REST call from Lambda often extremely slow
up vote
4
down vote
favorite
I'm not sure if the question is correct here or would better fit on Super User. However since I think I may did something wrong with my code I try it here.
I created a small proxy lambda function to invoke my REST API. I'm using node.js and the request package. Here is my code:
exports.handler = function (request, context) {
require('request').post({url: 'https://example.com/foo/bar', json:request, timeout:1000}, function(error, response, body){
if(error) {
console.log("Something went wrong:n" + JSON.stringify(error, null, 2));
context.succeed({failed:true})
} else {
console.log("Returning remote response:n" + JSON.stringify(body, null, 2));
context.succeed(body);
}
});
console.log("Forwarding request to own backend:n" + JSON.stringify(request, null, 2));
};
This is really nothing special however I thought that the request should be canceled after 1000ms. But I see often that the execution was canceled due the timeout of 3000ms. I increased it to 30000ms and it starts working. Sometimes the lambda is excuted within 500ms but then it takes the next time 3100ms. I do not unterstand why this happens. Please enlighten me.
node.js rest amazon-web-services aws-lambda runtime
add a comment |
up vote
4
down vote
favorite
I'm not sure if the question is correct here or would better fit on Super User. However since I think I may did something wrong with my code I try it here.
I created a small proxy lambda function to invoke my REST API. I'm using node.js and the request package. Here is my code:
exports.handler = function (request, context) {
require('request').post({url: 'https://example.com/foo/bar', json:request, timeout:1000}, function(error, response, body){
if(error) {
console.log("Something went wrong:n" + JSON.stringify(error, null, 2));
context.succeed({failed:true})
} else {
console.log("Returning remote response:n" + JSON.stringify(body, null, 2));
context.succeed(body);
}
});
console.log("Forwarding request to own backend:n" + JSON.stringify(request, null, 2));
};
This is really nothing special however I thought that the request should be canceled after 1000ms. But I see often that the execution was canceled due the timeout of 3000ms. I increased it to 30000ms and it starts working. Sometimes the lambda is excuted within 500ms but then it takes the next time 3100ms. I do not unterstand why this happens. Please enlighten me.
node.js rest amazon-web-services aws-lambda runtime
add a comment |
up vote
4
down vote
favorite
up vote
4
down vote
favorite
I'm not sure if the question is correct here or would better fit on Super User. However since I think I may did something wrong with my code I try it here.
I created a small proxy lambda function to invoke my REST API. I'm using node.js and the request package. Here is my code:
exports.handler = function (request, context) {
require('request').post({url: 'https://example.com/foo/bar', json:request, timeout:1000}, function(error, response, body){
if(error) {
console.log("Something went wrong:n" + JSON.stringify(error, null, 2));
context.succeed({failed:true})
} else {
console.log("Returning remote response:n" + JSON.stringify(body, null, 2));
context.succeed(body);
}
});
console.log("Forwarding request to own backend:n" + JSON.stringify(request, null, 2));
};
This is really nothing special however I thought that the request should be canceled after 1000ms. But I see often that the execution was canceled due the timeout of 3000ms. I increased it to 30000ms and it starts working. Sometimes the lambda is excuted within 500ms but then it takes the next time 3100ms. I do not unterstand why this happens. Please enlighten me.
node.js rest amazon-web-services aws-lambda runtime
I'm not sure if the question is correct here or would better fit on Super User. However since I think I may did something wrong with my code I try it here.
I created a small proxy lambda function to invoke my REST API. I'm using node.js and the request package. Here is my code:
exports.handler = function (request, context) {
require('request').post({url: 'https://example.com/foo/bar', json:request, timeout:1000}, function(error, response, body){
if(error) {
console.log("Something went wrong:n" + JSON.stringify(error, null, 2));
context.succeed({failed:true})
} else {
console.log("Returning remote response:n" + JSON.stringify(body, null, 2));
context.succeed(body);
}
});
console.log("Forwarding request to own backend:n" + JSON.stringify(request, null, 2));
};
This is really nothing special however I thought that the request should be canceled after 1000ms. But I see often that the execution was canceled due the timeout of 3000ms. I increased it to 30000ms and it starts working. Sometimes the lambda is excuted within 500ms but then it takes the next time 3100ms. I do not unterstand why this happens. Please enlighten me.
node.js rest amazon-web-services aws-lambda runtime
node.js rest amazon-web-services aws-lambda runtime
edited Nov 19 at 11:52
Ryan Lee
504
504
asked Nov 17 at 15:42
rekire
34.8k26117212
34.8k26117212
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
accepted
it's probably from a normal behavior called Cold Start
When using AWS Lambda, provisioning of your function's container can
take >5 seconds. That makes it impossible to guarantee <1 second
responses to events such as API Gateway, DynamoDB, CloudWatch, S3,
etc.
here is a good article from serverless on what is it, and how to deal with it.
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
it's probably from a normal behavior called Cold Start
When using AWS Lambda, provisioning of your function's container can
take >5 seconds. That makes it impossible to guarantee <1 second
responses to events such as API Gateway, DynamoDB, CloudWatch, S3,
etc.
here is a good article from serverless on what is it, and how to deal with it.
add a comment |
up vote
1
down vote
accepted
it's probably from a normal behavior called Cold Start
When using AWS Lambda, provisioning of your function's container can
take >5 seconds. That makes it impossible to guarantee <1 second
responses to events such as API Gateway, DynamoDB, CloudWatch, S3,
etc.
here is a good article from serverless on what is it, and how to deal with it.
add a comment |
up vote
1
down vote
accepted
up vote
1
down vote
accepted
it's probably from a normal behavior called Cold Start
When using AWS Lambda, provisioning of your function's container can
take >5 seconds. That makes it impossible to guarantee <1 second
responses to events such as API Gateway, DynamoDB, CloudWatch, S3,
etc.
here is a good article from serverless on what is it, and how to deal with it.
it's probably from a normal behavior called Cold Start
When using AWS Lambda, provisioning of your function's container can
take >5 seconds. That makes it impossible to guarantee <1 second
responses to events such as API Gateway, DynamoDB, CloudWatch, S3,
etc.
here is a good article from serverless on what is it, and how to deal with it.
answered Nov 17 at 19:26
slimane
3944
3944
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53352750%2frest-call-from-lambda-often-extremely-slow%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown