【问题标题】:Running multiple containers on the same Service Fabric node在同一个 Service Fabric 节点上运行多个容器
【发布时间】:2020-09-18 05:57:19
【问题描述】:

我有一个具有 4 个内核的 Windows Service Fabric 节点,我想在其上托管 3 个容器化无状态服务,其中每个 Windows 容器都分配有 1 个内核来从队列中读取消息并对其进行处理。我进行了一些实验并得到了这些结果:

  • 1 个容器在节点上运行:消息大约需要 18 秒 已处理,每个容器的平均 CPU 使用率:24.7%,内存使用率:1 GB
  • 2 个容器在节点上运行:消息大约需要 25 秒 已处理,每个容器的平均 CPU 使用率:24.4%,内存使用率:1 GB
  • 3 个容器在节点上运行:消息大约需要 35 秒 已处理,每个容器的平均 CPU 使用率:24.6%,内存使用率:1 GB

我认为容器应该是隔离的,并且无论容器数量如何,我都希望处理时间保持在约 18 秒,但在这种情况下,添加一个容器似乎会影响其他容器的处理时间。每个容器都设置为使用 1 个核心,因此它们不应过度使用彼此的资源,并且 cpu 未达到充分利用。即使 CPU 是这里的瓶颈,我希望至少 2 个容器能够以约 18 秒的处理时间运行。

对结果有合理的解释吗?当有足够的计算资源时,难道不能在同一个 Service Fabric 主机上运行多个容器而不影响每个容器的性能吗?尝试在同一节点上运行多个容器时,Service Fabric 开销可能有多大?

谢谢!

【问题讨论】:

    标签: azure-service-fabric service-fabric-stateless


    【解决方案1】:

    您的容器不仅使用 CPU,还使用内存和 I/O(磁盘、网络),这也可能成为瓶颈。

    • 要查看 SF 的开销,请在 SF 之外运行容器,看看是否有影响。

    • 使用内存更大的机器,然后尝试使用 SSD 驱动器。看看这是否会提高性能。

    • 为避免进程开销,请考虑使用单个容器并让多个线程进行并行消息处理。确保为其分配 3 个核心。

    【讨论】:

      猜你喜欢
      • 2020-08-12
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      • 2018-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多