vert.x - 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
解决方案
推荐阅读
- php - PHP 更优雅的方式来制作随机 1 或 0 二进制模式
- node.js - MongoDB聚合在日期字段分组后添加两个日期之间的缺失月份
- java - 一次性局部变量是 final 是什么意思?
- go - Go 如何解析模块 URL
- segmentation-fault - 将可选的可分配数组与可选的不可分配的虚拟参数相关联时出现分段错误
- python - 不同的盒子做不同的事情
- amazon-ec2 - Redis集群创建副本绑定公网IP
- python - 在 pandas DataFrame 中检查相似地址的最快方法是什么?
- kubernetes - 带有 traefik 的 k8s:打开 udp 端口作为入口规则
- c# - 对 LINQ 或 Lambda 的 SQL 查询