【问题标题】:Multiple concurrent connections with Vertx与 Vertx 的多个并发连接
【发布时间】:2019-10-14 17:08:54
【问题描述】:

我正在尝试构建一个应该能够处理至少 15000 rps 的 Web 应用程序。我所做的一些优化是将工作池大小增加到 20 并将接受后备日志设置为 25000。因为我已将工作池大小设置为 20;这对阻塞代码有帮助吗?

【问题讨论】:

    标签: vert.x


    【解决方案1】:

    大小为 20 的工作器池似乎是 the default

    我认为,在您的案例中,重要的问题是您希望每个请求运行多长时间。在我这边,我预计会有数千个短期请求,每个请求的有效负载大小约为 5-10KB。由于我目前使用的阻塞数据库驱动程序,所有这些都将被阻塞。我已将默认工作池大小增加到 40,并使用以下公式明确设置了我的部署垂直实例:

    final int instances = Math.min(Math.max(Runtime.getRuntime().availableProcessors() / 2, 1), 2);
    

    在 vert.x 服务器上运行 60 秒的同时运行 500 个客户端的测试运行,除了阻塞调用之外什么都不做,在 11089 个请求中平均产生 6 个失败请求。在这种情况下,我的测试负载约为 28KB。

    当然,根据经验,我知道在生产环境中运行我的软件通常会产生我没有预料到的结果。因此,就我而言,重要的是要有良好的原子性规则,这样我就不会在数据库中得到半生不熟或损坏的数据。

    【讨论】:

    • 两个问题:1. 这个公式背后的动机是什么?例如:如果我的 CPU 有 2 个内核;上面的公式会将实例数设置为 1。这不会被利用吗? 2. 您是如何测试并发客户端请求的?
    猜你喜欢
    • 2017-04-03
    • 2016-10-25
    • 2012-12-17
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 2015-08-10
    相关资源
    最近更新 更多