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
253
253
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.
New contributor
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.
New contributor
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.
New contributor
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.
New contributor
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.
New contributor
New contributor
answered Nov 17 at 19:26
slimane
3394
3394
New contributor
New contributor
add a comment |
add a comment |
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