繁体   English   中英

HttpResponse:对vert.x应用程序进行基准测试时无法响应

[英]HttpResponse: failed to respond when benchmarking vert.x application

我使用vert.x构建了一个REST Web服务,我的机器有8个CPU,并且我正在运行一个具有16个实例的垂直服务器

该服务只有1个端点-POST“执行”。 该代码正在调用第三方,因此我以blockingHandler的身份运行它,可能需要4到30秒才能返回。

我希望能够一次支持1,000个并发请求。 我开始进行一些性能和负载测试,但是由于某种原因,在大约100个请求之后,我开始得到:

响应代码:非HTTP响应代码:org.apache.http.NoHttpResponseException响应消息:非HTTP响应消息:localhost:9999无法响应

我尝试执行以下操作:

  • 我将单个垂直对象与单个实例放在一起。
    • 我写了一个运行10/20/30 ... / 100个并发线程的Java代码,每个线程都发出POST请求
    • 90个请求很好,大多数时候也有100个。 当我尝试105,110时,我开始遇到这些故障。
    • 我换成了Jmeter,同样的问题,那里的数字相同。
    • 切换到AB和WRK-相同的问题。
    • 我在16个实例环境中测试了相同的内容-再次,相同的数字
    • 无论我设置什么连接超时或请求超时,在20秒后,客户端都只会“放弃”

这里最有趣的是,即使对于失败的请求,vert.x仍可继续工作并成功完成请求。

我猜想这可能与网络有关,我一直在获得相同的结果时,更换了计算机,更改了linux / Mac。

有人有主意吗?

通过使用blockingHandler ,您正在朝自己开枪。 实际上,双腿都是。

你需要做什么:

  1. 使用常规路由处理程序
  2. 通过EventBus向您发送消息到WorkerVerticle
  3. 你的网络在那里打吗
  4. 通过带有reply() EventBus返回结果
  5. 通话结束()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM