2016-11-04 40 views
-1

我做了并发请求,我正在做测试,并希望能够拉起'并发级别',但我发现这些在主线程中不容易找到。如何在Spring MVC/Java/Spring引导/ etc中找到请求并发?

例如,做一个apachebench测试我有50并发有10000个请求运行时:

ab -c 50 -n 10000 -H "Content-Type: application/json" http://localhost:8080/v0.1/post/show/1" 

...或围困同一水平......

siege -b -c 50 -n 10000 -t120S http://localhost:8080/v0.1/post/show/1 

其中会我发现在一个Spring servlet中?或者我会如何构建它?

+0

请求线程的数目在容器(例如tomcat)中配置,而不是在servlet中配置或在春天。 https://tomcat.apache.org/tomcat-8.0-doc/config/executor.html –

+0

是的,但是这被传递给servlet,以便它可以处理它。否则,异步处理将不可能。因此,您应该能够检测它们是否多于一个请求,根据需要获取计数并生成异步处理。 – Orubel

回答

0

所以,很多假设这里,但我怀疑,因为你的无阻塞的servlet都必须有一个AsyncTaskExecutor的一些实例(建议见docsreference - 相关的部分是在这里:

默认情况下,Spring MVC使用SimpleAsyncTaskExecutor来执行由控制器方法返回的Callable实例,对于生产,您必须将其替换为适合您的环境的AsyncTaskExecutor实现,MVC Java配置和MVC命名空间都提供了配置AsyncTaskExecutor和异步请求的选项一般情况下处理,你也可以直接配置RequestMappingHandlerAdapter,

因此,使用AsyncTaskExecutor实现(通过注入记录器/ mbean?)可能会为您提供您正在查找的API(例如, getConcurrencyLimit()或getActiveCount())。考虑到您的AsyncTaskExecutor可能特定于您的环境(并且希望您未使用默认环境),因此这将会有所不同。(

+0

是啊与threadPoolExecutor一起使用Reactor。检出文档,问题仍然存在:是否需要在筛选器中运行异步“taskexecutor”以获取计数或其他内容?我们会得到并发请求数。已经尝试了很多东西,似乎没有任何工作。 – Orubel