What is the best way to performance test an SQS consumer to find the max TPS that one host can handle?Amazon SQS queue limitsWriting from Heroku to Amazon SQS : bad performanceAmazon AWS, messages from SQS queue delivered multiple timesOn Demand SchedulerHow accurate is the ApproximateReceiveCount from SQSHow to pace the consumption of a sqs queue using spring integrationAWS: Execute a task after 1 year has elapsedReal-time monitoring of SQS queue in AWSAWSQueueService UsageValueWhy is ApproximateAgeOfOldestMessage in SQS not bigger than approx 5 mins
Does a bank have to tell me if a check made out to me was cashed there?
Is the use of umgeben in the passive unusual?
How do i export activities related to an account with a specific recordtype?
Did Apple bundle a specific monitor with the Apple II+ for schools?
Why are MBA programs closing in the United States?
Separate SPI data
Prob. 5, Sec. 6.2, in Bartle & Sherbert's INTRO TO REAL ANALYSIS, 4th ed: How to show this function is strictly decreasing using derivative
Fermat's statement about the ancients: How serious was he?
Do people with slow metabolism tend to gain weight (fat) if they stop exercising?
Getting UPS Power from One Room to Another
How to avoid typing 'git' at the begining of every Git command
Electricity free spaceship
2019 gold coins to share
What aircraft was used as Air Force One for the flight between Southampton and Shannon?
Was Self-modifying-code possible just using BASIC?
Live action TV show where High school Kids go into the virtual world and have to clear levels
C++ logging library
bash vs. zsh: What are the practical differences?
Is it okay to have a sequel start immediately after the end of the first book?
60s or 70s novel about Empire of Man making 1st contact with 1st discovered alien race
What would be the way to say "just saying" in German? (Not the literal translation)
How can I spread content from an ancient text without governmental supervision?
empApi with Lightning Web Components?
Why did the World Bank set the global poverty line at $1.90?
What is the best way to performance test an SQS consumer to find the max TPS that one host can handle?
Amazon SQS queue limitsWriting from Heroku to Amazon SQS : bad performanceAmazon AWS, messages from SQS queue delivered multiple timesOn Demand SchedulerHow accurate is the ApproximateReceiveCount from SQSHow to pace the consumption of a sqs queue using spring integrationAWS: Execute a task after 1 year has elapsedReal-time monitoring of SQS queue in AWSAWSQueueService UsageValueWhy is ApproximateAgeOfOldestMessage in SQS not bigger than approx 5 mins
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I have a SQS consumer running in EventConsumerService that needs to handle up to 3K TPS successfully, sometimes upwards of 20K TPS (or 1.2 million messages per minute). For each message processed, I make a REST call to DataService's TCP VIP. I'm trying to perform a load test to find the max TPS that one host can handle in EventConsumerService without overstraining:
- Request volume on dependencies, DynamoDB storage, etc
- CPU utilization in both EventConsumerService and DataService
- Network connections per host
- IO stats due to overlogging
- DLQ size must be minimal, currently I am seeing my DLQ growing to 500K messages due to 500 Service Unavailable exceptions thrown from DataService, so something must be wrong.
- Approximate age of oldest message. I do not want a message sitting in the queue for over X minutes.
- Fatals and latency of the REST call to DataService
- Active threads
This is how I am performing the performance test:
I set up both my consumer and the other service on one host, the reason being I want to understand the load on both services per host.
I use a TPS generator to fill the SQS queue with a million messages
The EventConsumerService service is already running in production. Once messages started filling the SQS queue, I immediately could see requests being sent to DataService.
Here are the parameters I am tuning to find messagesPolledPerSecond:
messagesPolledPerSecond = (numberOfHosts * numberOfPollers * messageFetchSize) * (1000/(sleepTimeBetweenPollsPerMs+receiveMessageTimePerMs))
messagesInSurge / messagesPolledPerSecond = ageOfOldestMessageSLA
ageOfOldestMessage + settingsUpdatedLatency < latencySLA
The variables for SqsConsumer which I kept constant are:
- numberOfHosts = 1
- ReceiveMessageTimePerMs = 60 ms? It's out of my control
- Max thread pool size: 300
Other factors are all game:
- Number of pollers (default 1), I set to 150
- Sleep time between polls (default 100 ms), I set to 0 ms
- Sleep time when no messages (default 1000 ms), ???
- message fetch size (default 1), I set to 10
However, with the above parameters, I am seeing a high amount of messages being sent to the DLQ due to server errors, so clearly I have set values to be too high. This testing methodology seems highly inefficient, and I am unable to find the optimal TPS that does not cause such a tremendous number of messages to be sent to the DLQ, and does not cause such a high approximate age of the oldest message.
Any guidance is appreciated in how best I should test. It'd be very helpful if we can set up a time to chat. PM me directly
amazon-sqs
add a comment |
I have a SQS consumer running in EventConsumerService that needs to handle up to 3K TPS successfully, sometimes upwards of 20K TPS (or 1.2 million messages per minute). For each message processed, I make a REST call to DataService's TCP VIP. I'm trying to perform a load test to find the max TPS that one host can handle in EventConsumerService without overstraining:
- Request volume on dependencies, DynamoDB storage, etc
- CPU utilization in both EventConsumerService and DataService
- Network connections per host
- IO stats due to overlogging
- DLQ size must be minimal, currently I am seeing my DLQ growing to 500K messages due to 500 Service Unavailable exceptions thrown from DataService, so something must be wrong.
- Approximate age of oldest message. I do not want a message sitting in the queue for over X minutes.
- Fatals and latency of the REST call to DataService
- Active threads
This is how I am performing the performance test:
I set up both my consumer and the other service on one host, the reason being I want to understand the load on both services per host.
I use a TPS generator to fill the SQS queue with a million messages
The EventConsumerService service is already running in production. Once messages started filling the SQS queue, I immediately could see requests being sent to DataService.
Here are the parameters I am tuning to find messagesPolledPerSecond:
messagesPolledPerSecond = (numberOfHosts * numberOfPollers * messageFetchSize) * (1000/(sleepTimeBetweenPollsPerMs+receiveMessageTimePerMs))
messagesInSurge / messagesPolledPerSecond = ageOfOldestMessageSLA
ageOfOldestMessage + settingsUpdatedLatency < latencySLA
The variables for SqsConsumer which I kept constant are:
- numberOfHosts = 1
- ReceiveMessageTimePerMs = 60 ms? It's out of my control
- Max thread pool size: 300
Other factors are all game:
- Number of pollers (default 1), I set to 150
- Sleep time between polls (default 100 ms), I set to 0 ms
- Sleep time when no messages (default 1000 ms), ???
- message fetch size (default 1), I set to 10
However, with the above parameters, I am seeing a high amount of messages being sent to the DLQ due to server errors, so clearly I have set values to be too high. This testing methodology seems highly inefficient, and I am unable to find the optimal TPS that does not cause such a tremendous number of messages to be sent to the DLQ, and does not cause such a high approximate age of the oldest message.
Any guidance is appreciated in how best I should test. It'd be very helpful if we can set up a time to chat. PM me directly
amazon-sqs
add a comment |
I have a SQS consumer running in EventConsumerService that needs to handle up to 3K TPS successfully, sometimes upwards of 20K TPS (or 1.2 million messages per minute). For each message processed, I make a REST call to DataService's TCP VIP. I'm trying to perform a load test to find the max TPS that one host can handle in EventConsumerService without overstraining:
- Request volume on dependencies, DynamoDB storage, etc
- CPU utilization in both EventConsumerService and DataService
- Network connections per host
- IO stats due to overlogging
- DLQ size must be minimal, currently I am seeing my DLQ growing to 500K messages due to 500 Service Unavailable exceptions thrown from DataService, so something must be wrong.
- Approximate age of oldest message. I do not want a message sitting in the queue for over X minutes.
- Fatals and latency of the REST call to DataService
- Active threads
This is how I am performing the performance test:
I set up both my consumer and the other service on one host, the reason being I want to understand the load on both services per host.
I use a TPS generator to fill the SQS queue with a million messages
The EventConsumerService service is already running in production. Once messages started filling the SQS queue, I immediately could see requests being sent to DataService.
Here are the parameters I am tuning to find messagesPolledPerSecond:
messagesPolledPerSecond = (numberOfHosts * numberOfPollers * messageFetchSize) * (1000/(sleepTimeBetweenPollsPerMs+receiveMessageTimePerMs))
messagesInSurge / messagesPolledPerSecond = ageOfOldestMessageSLA
ageOfOldestMessage + settingsUpdatedLatency < latencySLA
The variables for SqsConsumer which I kept constant are:
- numberOfHosts = 1
- ReceiveMessageTimePerMs = 60 ms? It's out of my control
- Max thread pool size: 300
Other factors are all game:
- Number of pollers (default 1), I set to 150
- Sleep time between polls (default 100 ms), I set to 0 ms
- Sleep time when no messages (default 1000 ms), ???
- message fetch size (default 1), I set to 10
However, with the above parameters, I am seeing a high amount of messages being sent to the DLQ due to server errors, so clearly I have set values to be too high. This testing methodology seems highly inefficient, and I am unable to find the optimal TPS that does not cause such a tremendous number of messages to be sent to the DLQ, and does not cause such a high approximate age of the oldest message.
Any guidance is appreciated in how best I should test. It'd be very helpful if we can set up a time to chat. PM me directly
amazon-sqs
I have a SQS consumer running in EventConsumerService that needs to handle up to 3K TPS successfully, sometimes upwards of 20K TPS (or 1.2 million messages per minute). For each message processed, I make a REST call to DataService's TCP VIP. I'm trying to perform a load test to find the max TPS that one host can handle in EventConsumerService without overstraining:
- Request volume on dependencies, DynamoDB storage, etc
- CPU utilization in both EventConsumerService and DataService
- Network connections per host
- IO stats due to overlogging
- DLQ size must be minimal, currently I am seeing my DLQ growing to 500K messages due to 500 Service Unavailable exceptions thrown from DataService, so something must be wrong.
- Approximate age of oldest message. I do not want a message sitting in the queue for over X minutes.
- Fatals and latency of the REST call to DataService
- Active threads
This is how I am performing the performance test:
I set up both my consumer and the other service on one host, the reason being I want to understand the load on both services per host.
I use a TPS generator to fill the SQS queue with a million messages
The EventConsumerService service is already running in production. Once messages started filling the SQS queue, I immediately could see requests being sent to DataService.
Here are the parameters I am tuning to find messagesPolledPerSecond:
messagesPolledPerSecond = (numberOfHosts * numberOfPollers * messageFetchSize) * (1000/(sleepTimeBetweenPollsPerMs+receiveMessageTimePerMs))
messagesInSurge / messagesPolledPerSecond = ageOfOldestMessageSLA
ageOfOldestMessage + settingsUpdatedLatency < latencySLA
The variables for SqsConsumer which I kept constant are:
- numberOfHosts = 1
- ReceiveMessageTimePerMs = 60 ms? It's out of my control
- Max thread pool size: 300
Other factors are all game:
- Number of pollers (default 1), I set to 150
- Sleep time between polls (default 100 ms), I set to 0 ms
- Sleep time when no messages (default 1000 ms), ???
- message fetch size (default 1), I set to 10
However, with the above parameters, I am seeing a high amount of messages being sent to the DLQ due to server errors, so clearly I have set values to be too high. This testing methodology seems highly inefficient, and I am unable to find the optimal TPS that does not cause such a tremendous number of messages to be sent to the DLQ, and does not cause such a high approximate age of the oldest message.
Any guidance is appreciated in how best I should test. It'd be very helpful if we can set up a time to chat. PM me directly
amazon-sqs
amazon-sqs
asked Mar 24 at 20:25
James ChenJames Chen
14
14
add a comment |
add a comment |
0
active
oldest
votes
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%2f55328232%2fwhat-is-the-best-way-to-performance-test-an-sqs-consumer-to-find-the-max-tps-tha%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
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%2f55328232%2fwhat-is-the-best-way-to-performance-test-an-sqs-consumer-to-find-the-max-tps-tha%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