适当的方式报告容器中的C#应用​​程序的性能数据(Docker)

回到以前的虚拟机时代,我们曾经创build了性能计数器来报告Windows应用程序内部的情况,并使用了perfmon或相关工具来监视,存档和分析这些数据。

现在容器是要走的路,对于什么是正确的做法有很多含糊之处。 我正在编写一个旨在作为Docker镜像部署的新性能关键应用程序,并且需要报告一些措施。 而且我碰巧遇到了很多问题:

  • 性能是否会逆转?
  • 如果不是,那是什么?
  • 是否有足够的工具来支持从容器收集性能计数器?
  • 对于在主机上运行的许多容器是否有意义?
  • 如果我运行许多(如100个)docker图像的实例,如何理解性能数据?
  • 我可以问一些工具从图像的所有实例中收集所有的性能指标,并给我一些聚合(总和/平均/ …)?

因此,总而言之,在用于Docker容器上的横向扩展的C#/ .NET应用程序中,报告性能度量的正确方式是什么(例如,执行通过了代码中的某个点的次数)?