Throttling of Flow not working when created from Route









up vote
1
down vote

favorite












Consider routes containing all the HTTP services



val routes:Route = ...


I wish to throttle number of requests so I used Route.handleFlow(routes) to create flow and called throttle method with finite duration.



Finally, I created HTTP binding using



Http().bindAndHandle(flowObjectAfterThrottling, hostname, port)


When HTTP requests are fired from a loop throttling is not obeyed by akka.










share|improve this question

























    up vote
    1
    down vote

    favorite












    Consider routes containing all the HTTP services



    val routes:Route = ...


    I wish to throttle number of requests so I used Route.handleFlow(routes) to create flow and called throttle method with finite duration.



    Finally, I created HTTP binding using



    Http().bindAndHandle(flowObjectAfterThrottling, hostname, port)


    When HTTP requests are fired from a loop throttling is not obeyed by akka.










    share|improve this question























      up vote
      1
      down vote

      favorite









      up vote
      1
      down vote

      favorite











      Consider routes containing all the HTTP services



      val routes:Route = ...


      I wish to throttle number of requests so I used Route.handleFlow(routes) to create flow and called throttle method with finite duration.



      Finally, I created HTTP binding using



      Http().bindAndHandle(flowObjectAfterThrottling, hostname, port)


      When HTTP requests are fired from a loop throttling is not obeyed by akka.










      share|improve this question













      Consider routes containing all the HTTP services



      val routes:Route = ...


      I wish to throttle number of requests so I used Route.handleFlow(routes) to create flow and called throttle method with finite duration.



      Finally, I created HTTP binding using



      Http().bindAndHandle(flowObjectAfterThrottling, hostname, port)


      When HTTP requests are fired from a loop throttling is not obeyed by akka.







      akka akka-stream akka-http






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 11 at 18:52









      Hariharan

      4271821




      4271821






















          1 Answer
          1






          active

          oldest

          votes

















          up vote
          1
          down vote



          accepted










          One possibility is that the http requests being "fired from a loop" may be using separate connections. Each incoming connection is throttling at the appropriate rate but the aggregate throughput is higher than expected.



          Use Configurations Instead



          You don't need to write software to set limiting rates for your Route.



          If you are only concerned with consumption of a resource, such as disk or RAM, then you can remove the rate logic and use akka configuration settings instead:



          # The maximum number of concurrently accepted connections when using the
          # `Http().bindAndHandle` methods.
          max-connections = 1024

          # The maximum number of requests that are accepted (and dispatched to
          # the application) on one single connection before the first request
          # has to be completed.
          pipelining-limit = 16


          This doesn't provide the ability to set a maximum frequency, but it does at least allow for the specification of a maximum concurrent usage which is usually sufficient for resource protection.






          share|improve this answer






















            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',
            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%2f53252042%2fthrottling-of-flow-not-working-when-created-from-route%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








            up vote
            1
            down vote



            accepted










            One possibility is that the http requests being "fired from a loop" may be using separate connections. Each incoming connection is throttling at the appropriate rate but the aggregate throughput is higher than expected.



            Use Configurations Instead



            You don't need to write software to set limiting rates for your Route.



            If you are only concerned with consumption of a resource, such as disk or RAM, then you can remove the rate logic and use akka configuration settings instead:



            # The maximum number of concurrently accepted connections when using the
            # `Http().bindAndHandle` methods.
            max-connections = 1024

            # The maximum number of requests that are accepted (and dispatched to
            # the application) on one single connection before the first request
            # has to be completed.
            pipelining-limit = 16


            This doesn't provide the ability to set a maximum frequency, but it does at least allow for the specification of a maximum concurrent usage which is usually sufficient for resource protection.






            share|improve this answer


























              up vote
              1
              down vote



              accepted










              One possibility is that the http requests being "fired from a loop" may be using separate connections. Each incoming connection is throttling at the appropriate rate but the aggregate throughput is higher than expected.



              Use Configurations Instead



              You don't need to write software to set limiting rates for your Route.



              If you are only concerned with consumption of a resource, such as disk or RAM, then you can remove the rate logic and use akka configuration settings instead:



              # The maximum number of concurrently accepted connections when using the
              # `Http().bindAndHandle` methods.
              max-connections = 1024

              # The maximum number of requests that are accepted (and dispatched to
              # the application) on one single connection before the first request
              # has to be completed.
              pipelining-limit = 16


              This doesn't provide the ability to set a maximum frequency, but it does at least allow for the specification of a maximum concurrent usage which is usually sufficient for resource protection.






              share|improve this answer
























                up vote
                1
                down vote



                accepted







                up vote
                1
                down vote



                accepted






                One possibility is that the http requests being "fired from a loop" may be using separate connections. Each incoming connection is throttling at the appropriate rate but the aggregate throughput is higher than expected.



                Use Configurations Instead



                You don't need to write software to set limiting rates for your Route.



                If you are only concerned with consumption of a resource, such as disk or RAM, then you can remove the rate logic and use akka configuration settings instead:



                # The maximum number of concurrently accepted connections when using the
                # `Http().bindAndHandle` methods.
                max-connections = 1024

                # The maximum number of requests that are accepted (and dispatched to
                # the application) on one single connection before the first request
                # has to be completed.
                pipelining-limit = 16


                This doesn't provide the ability to set a maximum frequency, but it does at least allow for the specification of a maximum concurrent usage which is usually sufficient for resource protection.






                share|improve this answer














                One possibility is that the http requests being "fired from a loop" may be using separate connections. Each incoming connection is throttling at the appropriate rate but the aggregate throughput is higher than expected.



                Use Configurations Instead



                You don't need to write software to set limiting rates for your Route.



                If you are only concerned with consumption of a resource, such as disk or RAM, then you can remove the rate logic and use akka configuration settings instead:



                # The maximum number of concurrently accepted connections when using the
                # `Http().bindAndHandle` methods.
                max-connections = 1024

                # The maximum number of requests that are accepted (and dispatched to
                # the application) on one single connection before the first request
                # has to be completed.
                pipelining-limit = 16


                This doesn't provide the ability to set a maximum frequency, but it does at least allow for the specification of a maximum concurrent usage which is usually sufficient for resource protection.







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Nov 11 at 19:33

























                answered Nov 11 at 19:26









                Ramon J Romero y Vigil

                11.6k24070




                11.6k24070



























                    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.





                    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.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53252042%2fthrottling-of-flow-not-working-when-created-from-route%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







                    這個網誌中的熱門文章

                    Barbados

                    How to read a connectionString WITH PROVIDER in .NET Core?

                    Node.js Script on GitHub Pages or Amazon S3