对于我的情况,我非常期待你的想法。
我使用 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))
但是它不起作用! 有什么帮助吗?非常感谢大家!
我猜您部署了 1 个实例的 Verticle。通过选项增加因子数:
new DeploymentOptions().setInstances(your_number) // set here
Vertx 将使用许多 verticle 实例来处理您的请求。