spring boot 应用程序只接受 6 个请求,为啥?
Posted
技术标签:
【中文标题】spring boot 应用程序只接受 6 个请求,为啥?【英文标题】:spring boot app only accepts 6 requests why?spring boot 应用程序只接受 6 个请求,为什么? 【发布时间】:2016-07-29 10:17:55 【问题描述】:这真的很烦我,希望有人能提供帮助。
我有一个 Spring Boot 应用程序,我正在向邮递员发出请求,我需要同时发出大约 20 个单独的请求。但是,我的应用程序只接受 6,然后在这些完成后启动其他应用程序。
我将示例麻木以便在此处发布
简单的控制器方法
@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
邮递员发出的请求的日志。如您所见,在 6 个请求之后,第 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
提前致谢
【问题讨论】:
大多数浏览器都限制向同一域 / url 触发 6 个并发请求。见sgdev-blog.blogspot.nl/2014/01/…。因此,它与您的后端无关,而与您如何触发请求有关。 【参考方案1】:很多人不知道(或忘记)的是,大多数浏览器都有每个主机可以触发的最大并行请求数。多少取决于浏览器和浏览器版本。 (显然你使用 Postman,它使用允许 6 个并发请求的 chrome)。
有关更详细的说明,请参阅http://sgdev-blog.blogspot.nl/2014/01/maximum-concurrent-connection-to-same.html。
另见https://***.com/a/985704/2696260
【讨论】:
万一其他人遇到这种情况,但对于 2 个并行请求,Chromium 浏览器会在请求可缓存资源时阻塞。见***.com/q/27513994/2506594以上是关于spring boot 应用程序只接受 6 个请求,为啥?的主要内容,如果未能解决你的问题,请参考以下文章
为啥spring boot应用程序的main方法已经返回,但应用程序仍然可以接受请求? [关闭]
带有 Spring Boot 的 CORS - 将 GET 请求限制到某些域
Spring Boot 2从入门到入坟 | 请求参数处理篇:常用参数注解之@PathVariable