Spring Boot 应用程序只接受 6 个请求,为什么?

标签 spring multithreading spring-boot postman

这真的让我很烦恼,希望有人能帮忙。

我有一个 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)。

List of parallel connections per browser

参见http://sgdev-blog.blogspot.nl/2014/01/maximum-concurrent-connection-to-same.html以获得更详细的描述。

另请参阅https://stackoverflow.com/a/985704/2696260

关于Spring Boot 应用程序只接受 6 个请求,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36494719/

相关文章:

java - 了解spring ldap中过滤器的含义

spring - 如果在运行 spring boot 应用程序时不存在 Postgres 数据库,则创建它

spring - PermGen 内存不足 - Netbeans

javascript - 我如何传递两个参数 @Path 和 @PathParam

objective-c - 使用 GCD 调度队列 block 外部定义的 C 指针对象 (CGImageRef) 时出现内存问题

spring-boot - 使用spring-boot :build-image in Gitlab-ci. yaml Pipeline创建docker镜像

java - 将带有 jackson 的嵌套 json 映射到 java 字段

c++ - 取消运行长时间操作的线程

Java 与 Groovy 继承和基于父类的线程上下文

java - 如何为不同类型的异常设置不同的状态码