2016-11-04 15 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