首页 > 解决方案 > vertx 如何让后期处理程序更有效地工作

问题描述

我是 vertx 的新手,正在尝试进行测试以将一些遗留代码迁移到 vertx,以提高 qps 性能。但是我在迁移 post 方法时遇到了麻烦。

我尝试添加一些如下代码,我可以从请求中获取表单属性并获取处理程序工作

router.route().handler(BodyHandler.create(false));

.handler(routingContext -> {
         HttpServerRequest request = routingContext.request();
         request.setExpectMultipart(true);
         request.endHandler(end -> {
           // request.params().addAll(request.formAttributes());
           routingContext.next();
         });
})

但我发现qps迅速下降,处理程序在里面做mysql事务。

wrk -t 4 -c 5000 -d 100s -T 30s --latency --script=post.lua http://xxx:8080/api/test-post
Running 2m test @ http://xxx:8080/api/test-post
  4 threads and 5000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    62.05ms   24.48ms 379.37ms   75.58%
    Req/Sec     4.11k     2.27k   14.34k    56.06%
  Latency Distribution
     50%   63.10ms
     75%   74.89ms
     90%   89.70ms
     99%  127.75ms
  1630551 requests in 1.67m, 181.94MB read
  Socket errors: connect 3983, read 0, write 0, timeout 0
  Non-2xx or 3xx responses: 1630551
Requests/sec:  16289.62
Transfer/sec:      1.82MB

wrk -t 4 -c 5000 -d 100s -T 30s --latency --script=post.lua http://xxx:8080/api/test-post
4 threads and 5000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     2.49s   451.83ms   5.09s    92.64%
    Req/Sec   157.46    105.25   514.00     62.56%
  Latency Distribution
     50%    2.38s
     75%    2.58s
     90%    2.82s
     99%    4.93s
  39585 requests in 1.67m, 2.68MB read
  Socket errors: connect 3983, read 0, write 0, timeout 0
Requests/sec:    395.60
Transfer/sec:     27.43KB

我使用 vertx 4 4.0.0-milestone4

标签: vert.x

解决方案


推荐阅读