REST call from Lambda often extremely slow
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 |
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 |
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 '18 at 11:52
Ryan Lee
645
645
asked Nov 17 '18 at 15:42
rekirerekire
35k26119215
35k26119215
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
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 |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
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
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
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 |
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 |
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 '18 at 19:26
stackerstacker
1,39627
1,39627
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.
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