Java HttpResponse:对vert.x应用程序进行基准测试时未能响应
我使用vert.x构建了一个RESTWeb服务 我的机器有8个CPU,我运行的是一个有16个实例的垂直系统 此服务只有一个终结点-POST“execute”。此代码正在调用第三方, 所以我以blockingHandler的方式运行它,它可能需要4-30秒才能返回 我希望一次能够支持1000个并发请求。 我开始做一些性能和负载测试,但由于某种原因,在大约100个请求之后,我就开始了 开始得到: 响应代码:非HTTP响应代码: org.apache.http.NoHttpResponseException响应消息:非http 响应消息:localhost:9999未能响应 我试着做到以下几点:Java HttpResponse:对vert.x应用程序进行基准测试时未能响应,java,concurrency,benchmarking,vert.x,Java,Concurrency,Benchmarking,Vert.x,我使用vert.x构建了一个RESTWeb服务 我的机器有8个CPU,我运行的是一个有16个实例的垂直系统 此服务只有一个终结点-POST“execute”。此代码正在调用第三方, 所以我以blockingHandler的方式运行它,它可能需要4-30秒才能返回 我希望一次能够支持1000个并发请求。 我开始做一些性能和负载测试,但由于某种原因,在大约100个请求之后,我就开始了 开始得到: 响应代码:非HTTP响应代码: org.apache.http.NoHttpResponseExcept
- 我用一个实例放了一个竖线。
- 我编写了一个java代码,它运行10/20/30…/100个并发线程,每个线程都发出POST请求
- 90个请求都很好,大多数情况下100个也不错。当我尝试105110时,我开始遇到这些失败
- 我换成了Jmeter,同样的问题,同样的数字
- 切换到ab和wrk-同一问题
- 我在我的16个env实例上测试了同样的东西——同样的数字
- 看起来无论我设置了什么连接超时或请求超时,20秒后客户端都会“放弃”
有人有主意吗?使用
blockingHandler
,你就是在打自己的腿。实际上是双腿
您需要做的是:
reply()的EventBus返回结果
请发布处理消息服务器端的代码。另外,服务器是否对响应调用end()函数?我无法发布原始代码,所以我稍微模拟了一下(此代码也会产生错误):router.post(“/dummy”).blockingHandler(r->{try{Thread.sleep(3000);}catch(InterruptedException e){e.printStackTrace();}r.response().setStatusCode(200.end(“OK”);});