HttpResponse:对 vert.x 应用程序进行基准测试时未能响应
HttpResponse: failed to respond when benchmarking vert.x application
我使用 vert.x 构建了一个 REST Web 服务
我的机器有 8 个 CPU,我 运行 宁宁一个垂直与 16 个实例
此服务只有 1 个端点 - POST'execute'。此代码正在调用第 3 方,
所以我 运行 它作为 blockingHandler,return.
可能需要 4-30 秒
我希望一次能够支持1000个并发请求。
我开始进行一些性能和负载测试,但出于某种原因,在大约 100 个请求之后我
开始获得:
Response code: Non HTTP response code:
org.apache.http.NoHttpResponseException Response message: Non HTTP
response message: localhost:9999 failed to respond
我尝试执行以下操作:
- 我将单个垂直与单个实例放在一起。
- 我写了一个 java 代码,其中 运行 10/20/30.../100 个并发线程,每个线程发出一个 POST 请求
- 90 个请求是好的,大多数时候也是 100 个。当我尝试 105,110 时,我开始遇到这些失败。
- 我换成了Jmeter,同样的问题,同样的数字。
- 切换到 ab 和 wrk - 同样的问题。
- 我在我的 16 个环境实例上测试了相同的东西 - 再次,相同的数字
- 看起来无论我设置什么连接超时或请求超时,20 秒后客户端只是 "give up"
这里最有趣的是 vert.x 继续工作并成功完成请求,即使
对于失败的请求。
我猜可能是网络问题,我换了电脑,我换了linux/Mac,
我一直得到相同的结果。
有人有想法吗?
使用 blockingHandler
,你就是在搬石头砸自己的腿。实际上在两条腿上。
您需要做的事情:
- 使用常规路由处理程序
- 通过 EventBus 向 WorkerVerticle 发送消息
- 在那里打网络电话
- Return 在 EventBus 上的结果
reply()
- 通话结束()
我使用 vert.x 构建了一个 REST Web 服务 我的机器有 8 个 CPU,我 运行 宁宁一个垂直与 16 个实例
此服务只有 1 个端点 - POST'execute'。此代码正在调用第 3 方, 所以我 运行 它作为 blockingHandler,return.
可能需要 4-30 秒我希望一次能够支持1000个并发请求。 我开始进行一些性能和负载测试,但出于某种原因,在大约 100 个请求之后我 开始获得:
Response code: Non HTTP response code: org.apache.http.NoHttpResponseException Response message: Non HTTP response message: localhost:9999 failed to respond
我尝试执行以下操作:
- 我将单个垂直与单个实例放在一起。
- 我写了一个 java 代码,其中 运行 10/20/30.../100 个并发线程,每个线程发出一个 POST 请求
- 90 个请求是好的,大多数时候也是 100 个。当我尝试 105,110 时,我开始遇到这些失败。
- 我换成了Jmeter,同样的问题,同样的数字。
- 切换到 ab 和 wrk - 同样的问题。
- 我在我的 16 个环境实例上测试了相同的东西 - 再次,相同的数字
- 看起来无论我设置什么连接超时或请求超时,20 秒后客户端只是 "give up"
这里最有趣的是 vert.x 继续工作并成功完成请求,即使 对于失败的请求。
我猜可能是网络问题,我换了电脑,我换了linux/Mac, 我一直得到相同的结果。
有人有想法吗?
使用 blockingHandler
,你就是在搬石头砸自己的腿。实际上在两条腿上。
您需要做的事情:
- 使用常规路由处理程序
- 通过 EventBus 向 WorkerVerticle 发送消息
- 在那里打网络电话
- Return 在 EventBus 上的结果
reply()
- 通话结束()