这真的让我很烦恼,希望有人能帮忙。
我有一个 Spring Boot 应用程序,我正在向 postman 发出请求,并且我需要同时发出大约 20 个单独的请求。然而我的应用程序只接受 6 个,然后当这些完成后启动其他的。
我 NumPy 了这个例子,以便将其发布在这里
简单的 Controller 方法
@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:我将最大线程数更改为 200 而不是默认值,但没有什么区别
server.contextPath=/qas
server.port=8081
server.tomcat.max-threads=200
postman 发出的请求的日志。正如您所看到的,在 6 个请求之后,只有在第 1 个请求空闲后,第 7 个请求才会得到服务。我在本地桌面上运行,没有负载均衡器,这是原因吗?不太清楚为什么它停在 6 点?
日志:
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
提前致谢
最佳答案
很多人不知道(或忘记)的是,大多数浏览器都有每个主机可以触发的最大并行请求数。具体多少取决于浏览器和浏览器版本。 (显然你使用Postman,它使用允许6个并发请求的chrome)。
参见http://sgdev-blog.blogspot.nl/2014/01/maximum-concurrent-connection-to-same.html以获得更详细的描述。
关于Spring Boot 应用程序只接受 6 个请求,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36494719/