【问题标题】:equal TPS returns for 1 or more vertx back ends when performing a load test (TPS is same for single node or several nodes)执行负载测试时,1 个或多个 vertx 后端的 TPS 相等(单个节点或多个节点的 TPS 相同)
【发布时间】:2019-05-11 00:18:50
【问题描述】:

我在 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));
                         });
                          }); 
                   });

【问题讨论】:

  • 上游测试{服务器127.0.0.1:8090;服务器 127.0.0.1:8091; # 服务器 127.0.0.1:8092; # 服务器 127.0.0.1:8093; } 服务器 { 听 8290; server_name 本地主机;位置 / { proxy_pass myproject; } }

标签: java nginx jmeter vert.x


【解决方案1】:

在 995 tps 测试期间,您的 JMeter 服务器的资源利用率(cpu、mem、网络、连接、线程等)是多少?在 995 tps 测试期间,单个 Vertx 节点的资源利用率数字是多少?

确保 JMeter 不是瓶颈。验证单个顶点服务器是否正在处理没有瓶颈的流量。 995 TPS 的单个 vertx 服务器资源利用率将为您提供单个服务器可以处理多少 tps 的线索。只有这样才能移动到多个顶点。

对于 995 TPS 的测试运行来说,250 个线程是相当低的。我更喜欢使用吞吐量整形计时器等设置目标 TPS。我使用大量的 JMeter 线程来确保每个线程的步调大于响应时间。这种方式 tps 不是简单地由响应时间确定的。如果没有步调,您的消防软管就会失控,并且很难管理任何可重复的数字并在被测系统上找到瓶颈。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    相关资源
    最近更新 更多