【问题标题】:Why I can't see the performance difference between Spring Boot and Vert.x为什么我看不到 Spring Boot 和 Vert.x 之间的性能差异
【发布时间】:2022-01-25 23:20:41
【问题描述】:

Vert.X 的一个优点是它的性能,但我看不出与我的测试有什么不同,有人知道为什么吗?测试只是打印 hello。

我还执行了请求 Google(Vert.x 中的异步请求)然后打印响应的测试。它还表明 2 个框架具有相同的性能。

Vert.x 代码:

public class MainVerticle extends AbstractVerticle {
  static String HELLO = "hello";
  @Override
  public void start(Promise<Void> startPromise) throws Exception {
    vertx.createHttpServer().requestHandler(req -> {
      req.response()
        .putHeader("content-type", "text/plain")
        .end(HELLO );
    }).listen(8888, http -> {
      if (http.succeeded()) {
        startPromise.complete();
        System.out.println("HTTP server started on port 8888");
      } else {
        startPromise.fail(http.cause());
      }
    });
  }
}

弹簧代码:

@SpringBootApplication
@RestController
public class DemoApplication {

    static String HELLO = "hello";
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
    @GetMapping("/")
    public String hei(){
        return HELLO;
    }
}

Apache Benchmark(从另一台机器调用):

ab -n 50000 -c 10 http://192.168.1.115:8888/

【问题讨论】:

    标签: spring spring-boot vert.x


    【解决方案1】:

    简单地说,您看不到性能优势,因为您测试了错误的东西。

    Vert.x 和一般的异步框架非常适合 IO 绑定操作。碰巧大多数读取世界的应用程序都是 IO 绑定的(等待 DB、磁盘、其他服务等)。

    不过,您的应用程序不会执行任何重要的 IO。所以,这是您看不到差异的原因之一。

    另一个原因是您使用的并发级别。 Spring 应用程序受其线程池大小的限制,但我猜它大于 10 个线程,因此您并没有真正给应用程序带来压力。

    第三个原因是您很可能在与您的服务器正在运行的同一台机器上运行此测试。这是有缺陷的,因为您的 Vert.x 应用程序将与 ab 竞争资源。

    【讨论】:

    • 嗨,Alexey,感谢您的回答。 1:我知道 Vert.x 对异步 IO 操作有好处,所以我对异步 http 请求进行了测试,但结果与结果没有区别。 2:我引用了来自“Web Framework Benchmarks”和很多博客的数据,他们都声称即使打印纯文本 Vert.x 也比 spring 好得多。 3:我在本地网络中的另一台机器上进行测试
    • 实际上我尝试了 1000 个并发用户,但结果相同。我猜1000还是太低了?对于大多数应用程序,我认为 1000 就足够了。
    • @Rockman12352 从数字上看,Spring 每秒能够处理 200K 的明文请求:techempower.com/benchmarks/… 所以我认为你很难对应用程序施加那么大的压力。跨度>
    • 是的,从这个基准测试来看,Vert.x 比 Spring 好 10 倍,但从我自己的测试来看,它们几乎相同。所以我想知道发生了什么。
    • ab 无法将并发用户设置为 30K,所以我尝试 wrk。 Vert.x 这次展示了它的优势,比 Spring 好 10% 左右,而且消耗的内存更少。
    猜你喜欢
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 2010-10-25
    • 1970-01-01
    • 2020-05-02
    相关资源
    最近更新 更多