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;








0















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:



  1. Request volume on dependencies, DynamoDB storage, etc

  2. CPU utilization in both EventConsumerService and DataService

  3. Network connections per host

  4. IO stats due to overlogging

  5. 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.

  6. Approximate age of oldest message. I do not want a message sitting in the queue for over X minutes.

  7. Fatals and latency of the REST call to DataService

  8. Active threads

This is how I am performing the performance test:



  1. 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.


  2. I use a TPS generator to fill the SQS queue with a million messages


  3. 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:



  1. numberOfHosts = 1

  2. ReceiveMessageTimePerMs = 60 ms? It's out of my control

  3. Max thread pool size: 300

Other factors are all game:



  1. Number of pollers (default 1), I set to 150

  2. Sleep time between polls (default 100 ms), I set to 0 ms

  3. Sleep time when no messages (default 1000 ms), ???

  4. 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










share|improve this question




























    0















    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:



    1. Request volume on dependencies, DynamoDB storage, etc

    2. CPU utilization in both EventConsumerService and DataService

    3. Network connections per host

    4. IO stats due to overlogging

    5. 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.

    6. Approximate age of oldest message. I do not want a message sitting in the queue for over X minutes.

    7. Fatals and latency of the REST call to DataService

    8. Active threads

    This is how I am performing the performance test:



    1. 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.


    2. I use a TPS generator to fill the SQS queue with a million messages


    3. 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:



    1. numberOfHosts = 1

    2. ReceiveMessageTimePerMs = 60 ms? It's out of my control

    3. Max thread pool size: 300

    Other factors are all game:



    1. Number of pollers (default 1), I set to 150

    2. Sleep time between polls (default 100 ms), I set to 0 ms

    3. Sleep time when no messages (default 1000 ms), ???

    4. 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










    share|improve this question
























      0












      0








      0








      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:



      1. Request volume on dependencies, DynamoDB storage, etc

      2. CPU utilization in both EventConsumerService and DataService

      3. Network connections per host

      4. IO stats due to overlogging

      5. 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.

      6. Approximate age of oldest message. I do not want a message sitting in the queue for over X minutes.

      7. Fatals and latency of the REST call to DataService

      8. Active threads

      This is how I am performing the performance test:



      1. 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.


      2. I use a TPS generator to fill the SQS queue with a million messages


      3. 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:



      1. numberOfHosts = 1

      2. ReceiveMessageTimePerMs = 60 ms? It's out of my control

      3. Max thread pool size: 300

      Other factors are all game:



      1. Number of pollers (default 1), I set to 150

      2. Sleep time between polls (default 100 ms), I set to 0 ms

      3. Sleep time when no messages (default 1000 ms), ???

      4. 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










      share|improve this question














      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:



      1. Request volume on dependencies, DynamoDB storage, etc

      2. CPU utilization in both EventConsumerService and DataService

      3. Network connections per host

      4. IO stats due to overlogging

      5. 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.

      6. Approximate age of oldest message. I do not want a message sitting in the queue for over X minutes.

      7. Fatals and latency of the REST call to DataService

      8. Active threads

      This is how I am performing the performance test:



      1. 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.


      2. I use a TPS generator to fill the SQS queue with a million messages


      3. 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:



      1. numberOfHosts = 1

      2. ReceiveMessageTimePerMs = 60 ms? It's out of my control

      3. Max thread pool size: 300

      Other factors are all game:



      1. Number of pollers (default 1), I set to 150

      2. Sleep time between polls (default 100 ms), I set to 0 ms

      3. Sleep time when no messages (default 1000 ms), ???

      4. 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






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 24 at 20:25









      James ChenJames Chen

      14




      14






















          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
          );



          );













          draft saved

          draft discarded


















          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















          draft saved

          draft discarded
















































          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.




          draft saved


          draft discarded














          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





















































          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







          Popular posts from this blog

          Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

          Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

          Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript