Vertx намного медленнее, чем необработанный асинхронный сервлет с точно таким же кодом для выполнения
Я реализовал очень простой метод GET http, который ничего не делает, кроме Thread.sleep (30), прежде чем возвращать текст ответа http "ok",Я сделал это с помощью jetty-сервлета и vertx-ver vert
Vertx vertx = Vertx.vertx();
DeploymentOptions d = new DeploymentOptions();
d.setInstances(400);
d.setWorker(true);
d.setWorkerPoolSize(400);
vertx.deployVerticle("com.vertx.Ping",d);
открытый класс Ping extends AbstractVerticle {
private HttpServer server;
public void start(Future<Void> startFuture) {
server = vertx.createHttpServer().requestHandler(req -> {
try {
Thread.currentThread().sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
req.response().end("ok");
});
server.listen(9999);
}
}
ab -k -c 1 -n1 => один и тот же результат для сервлета и вершины: ~ 31 мс
сервлет: ab -k -c 1000 -n 100000 Процент запросов, обслуживаемых в течение определенного времени (мс) 50% 219 66% 224 75% 22780% 229 90% 235 95% 240 98% 245 99% 247 100% 264 (самый длинный запрос)
Vertx: ab -k -c 1000 -n 100000 => через более чем 2 минуты я остановил тест
Давайте попробуем что-нибудь попроще: Vertx: ab -k -c 1000 -n 10000 (в 10 раз меньше)
Процент запросов, обработанных за определенное время (мс) 50% 3930 66%3943 75% 3964 80% 3977 90% 3997 95% 4009 98% 4019 99% 4028 100% 4038 (самый длинный запрос)
Vertx так чертовски медленен, что я делаю не так, ребята?Спасибо