Я использую базовый c vert.x пример verticle, работающий на HTTP-сервере;
package io.vertx.starter;
import io.vertx.core.AbstractVerticle;
public class MainVerticle extends AbstractVerticle {
@Override
public void start() {
vertx.createHttpServer()
.requestHandler(req -> req.response().end("Hello Vert.x!"))
.listen(8080);
}
}
Это запускается и отвечает, поэтому я подумал, что я бы дал ему быстрый тест загрузки через ab -n 100000 -c 50 http://localhost:8080
Каждый прогон относительно непротиворечивый, время ожидания составляет около 16 400 выполненных запросов, дайте или возьмите 10. Я пробовал играть с setWorkerPoolSize
и setEventLoopPoolSize
в опциях vertx, но ничего не кажется чтобы получить эффект.
Я также попытался масштабировать вертикал с помощью --instances 10
и подтвердил, что она развернула 10 вершин. Как ни странно, тот же самый 16 400 находится там, где он умирает.
В журналах нет ошибок или предупреждений, просто кажется, что d ie под нагрузкой. Если через несколько секунд я нажму на него браузером, он снова откликнется счастливо. Кто-нибудь сталкивался с этим? Мне любопытно, почему это происходит, и как я могу это исправить.