我在Nginx后面有4个Vertx模拟API。在执行250个用户的jmeter负载测试时,对于1个vertx节点或更多顶点,结果都是相同的。
例如:-具有1个Vertx节点(0秒延迟)-995 tps,并且对于所有4个节点,结果都是相同的。如何通过增加后端来提高tps?
p.s当我放置一个计时器来创建后端延迟时,tps显着下降(950-> 180)。这是由于我的代码中的错误吗?
服务器-Linux 64,具有250个用户/ 125加速的Jmeter实例3.0
//---Vertx mock service ---------------------------
public class App extends AbstractVerticle {
private static Logger LOGGER = Logger.getLogger("InfoLogging");
public static void main(String[] args) {
Vertx vertx = Vertx.vertx();
PropertyConfigurator.configure(System.getProperty("user.dir")+"/log4j.properties");
HttpServer httpServer = vertx.createHttpServer();
Router router = Router.router(vertx);
Route ELKPaymentResponse = router
.post("/:param/amount")
.produces("application/json")
.handler(routingContext -> {
routingContext.request().bodyHandler(bodyHandler -> {
HttpServerResponse response = routingContext.response();
// response.setChunked(true);
String JsonResponse ="{
//Mock service here
}";
vertx.setTimer(TimeUnit.SECONDS.toMillis(1), l -> {
JsonObject json = new JsonObject(JsonResponse);
response.putHeader("Content-Type", "application/json; charset=UTF8")
.setStatusCode(200)
.end(Json.encodePrettily(json));
});
});
});
最佳答案
995 tps测试期间,JMeter服务器的资源利用率(cpu,mem,网络,连接,线程等)是多少?在995 tps测试期间,单个Vertx节点的资源利用率数字是多少?
确保JMeter不会成为瓶颈。验证单个顶点服务器正在处理流量而没有瓶颈。 995 TPS的单台vertx服务器资源利用率将为您提供线索,以了解单台服务器可以处理多少tps。只有这样,才能移动到多个顶点。
250个线程对于995 TPS的测试运行非常低。我更喜欢通过吞吐量调整计时器等设置目标TPS。我使用了大量的JMeter线程,以确保每个线程的步调大于响应时间。这样,tps不能简单地通过响应时间来确定。如果不调整速度,您将失去控制权,并且很难管理任何可重复的数字并在被测系统上发现瓶颈。