Vert.x IO阻塞操作性能
Vert.x IO Blocking operation performance
我正在尝试 运行 阻塞代码,例如 Thread.sleep(100)
来模拟具有 Vert.x 1000 工作池大小的重型数据库。
val options = DeploymentOptions().setWorker(true).setWorkerPoolSize(1000);
vertx.deployVerticle(new DataBase, options)
⠀
vertx.eventBus().consumer("anAddress").handler((message: Message[String]) => {
Thread.sleep(100)
val lines = "teste do joca"
message.reply(lines)
})
但是查看 Jmeter http 测试,我的吞吐量只有 10.1/秒。
如何在不破坏事件循环的情况下提高性能?
感谢提前!
Worker Verticles 处理工作线程上的事件,但单个实例在给定时间点只能处理一个事件。因此,如果您想利用所有实例,您应该部署与工作线程一样多的实例:
val options = DeploymentOptions()
.setWorker(true)
.setInstances(1000)
.setWorkerPoolSize(1000);
vertx.deployVerticle(() -> new DataBase(), options);
请注意,deploy
这里采用 Supplier
而不是单个 Verticle 实例。
我正在尝试 运行 阻塞代码,例如 Thread.sleep(100)
来模拟具有 Vert.x 1000 工作池大小的重型数据库。
val options = DeploymentOptions().setWorker(true).setWorkerPoolSize(1000);
vertx.deployVerticle(new DataBase, options)
⠀
vertx.eventBus().consumer("anAddress").handler((message: Message[String]) => {
Thread.sleep(100)
val lines = "teste do joca"
message.reply(lines)
})
但是查看 Jmeter http 测试,我的吞吐量只有 10.1/秒。
如何在不破坏事件循环的情况下提高性能?
感谢提前!
Worker Verticles 处理工作线程上的事件,但单个实例在给定时间点只能处理一个事件。因此,如果您想利用所有实例,您应该部署与工作线程一样多的实例:
val options = DeploymentOptions()
.setWorker(true)
.setInstances(1000)
.setWorkerPoolSize(1000);
vertx.deployVerticle(() -> new DataBase(), options);
请注意,deploy
这里采用 Supplier
而不是单个 Verticle 实例。