2

This is really annoying me and hoping someone can help.

I have a spring boot application which I am firing requests to from postman and i need to fire about 20 separate requests at the same time. However my application only accepts 6 and then when these have finished starts the others.

I numbed the example down so as to post it here

Simple controller method

@RequestMapping(value = "/testPost", method = RequestMethod.POST)
    public @ResponseBody String handleFileUpload() throws InterruptedException {
        System.out.println("Recieved request for Thread sleeping" + Thread.currentThread().getName());
        Thread.sleep(40000);
        System.out.println("Recieved request for Thread waking" + Thread.currentThread().getName());
        return "returning from post";
    }

application.properties: I changed the max thread count to 200 rather than default but made no difference

server.contextPath=/qas
server.port=8081

server.tomcat.max-threads=200

Logs for requests fired from postman. As you can see after 6 requests the 7th request is only serviced after the 1st request becomes free. I am running on my local desktop with no load balancer is this the reason? Not really sure why it stops at 6?

Logs:

2016-04-08 09:02:35.408  INFO 17700 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/qas]    : Initializing Spring FrameworkServlet 'dispatcherServlet'
2016-04-08 09:02:35.408  INFO 17700 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2016-04-08 09:02:35.421  INFO 17700 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 13 ms
Recieved request for Thread sleepinghttp-nio-8081-exec-1
Recieved request for Thread sleepinghttp-nio-8081-exec-2
Recieved request for Thread sleepinghttp-nio-8081-exec-3
Recieved request for Thread sleepinghttp-nio-8081-exec-4
Recieved request for Thread sleepinghttp-nio-8081-exec-5
Recieved request for Thread sleepinghttp-nio-8081-exec-6
Recieved request for Thread wakinghttp-nio-8081-exec-1
Recieved request for Thread sleepinghttp-nio-8081-exec-7
Recieved request for Thread wakinghttp-nio-8081-exec-2
Recieved request for Thread sleepinghttp-nio-8081-exec-8
Recieved request for Thread wakinghttp-nio-8081-exec-3
Recieved request for Thread wakinghttp-nio-8081-exec-4
Recieved request for Thread wakinghttp-nio-8081-exec-5
Recieved request for Thread wakinghttp-nio-8081-exec-6
Recieved request for Thread wakinghttp-nio-8081-exec-7
Recieved request for Thread wakinghttp-nio-8081-exec-8

Thanks in advance

user1107753
  • 1,566
  • 4
  • 24
  • 36
  • 2
    Most browser have a limit of firing 6 concurrent requests to the same domain / url. See http://sgdev-blog.blogspot.nl/2014/01/maximum-concurrent-connection-to-same.html. So it has nothing to do with your backend, but all with how you are firing your requests. – M. Deinum Apr 08 '16 at 09:09

1 Answers1

12

What a lot of people don't know (or forget) is that most browsers have a maximum number of parallel requests that can be fired per hosts. How many depends on the browser and browser version. (Apparently you use Postman, which uses chrome which allows 6 concurrent requests).

List of parallel connections per browser

See http://sgdev-blog.blogspot.nl/2014/01/maximum-concurrent-connection-to-same.html for a more detailed description.

See also https://stackoverflow.com/a/985704/2696260

M. Deinum
  • 115,695
  • 22
  • 220
  • 224
  • In case anyone else comes across this but for 2 parallel requests, Chromium browsers block when requesting cacheable resources. See https://stackoverflow.com/q/27513994/2506594 – Devin H. Nov 12 '19 at 13:07