当客户端同时调用许多 API 到 vertx 服务时,Vertx 单线程会变慢

问题描述 投票:0回答:1

对于我的情况,我非常期待你的想法。
我使用 vertx 4.5.7、vertx-pg-client 相同版本构建了 RestfulAPI。
开始时我像这样配置了池:

final PgConnectOptions connectOptions = new PgConnectOptions();
    connectOptions
            .setHost("host_example")
            .setPort(8080)
            .setDatabase("db_example")
            .setUser("user_example")
            .setPassword("password_example");
final PoolOptions poolOptions = new PoolOptions().setMaxSize(5);

当我同时调用 1,2 或 3 个 API 到服务时,响应时间仍然不错,每个请求可能需要 40-50 毫秒。
但是当我同时调用 8 或 10 个 API 时,问题就发生了,响应时间开始变慢,每个请求 >100 毫秒。
我认为可能是由于数据库连接,但当调用时,只有 1 个响应时间就非常好。
我创建的 API 非常简单,我不认为这是由于数据库连接池造成的。

dbClient.getConnection().compose(
    conn -> testRepo.getListCities()
       .onSuccess(data -> response.end(Json.encodePrettily(data)))
       .onFailure(throwable -> response.end(Json.encodePrettily("example exception")))
);

我应用了很多解决方案,例如:

vertx.createHttpClient(new HttpClientOptions()..setMaxPoolSize(20))

但是它不起作用! 有什么帮助吗?非常感谢大家!

vert.x event-loop vertx-verticle vertx-eventbus vertxoptions
1个回答
0
投票

我猜您部署了 1 个实例的 Verticle。通过选项增加因子数:

new DeploymentOptions().setInstances(your_number) // set here

Vertx 将使用许多 verticle 实例来处理您的请求。

文档详情

© www.soinside.com 2019 - 2024. All rights reserved.