gpt4 book ai didi

.net - 服务器开发中的性能计数器

转载 作者:行者123 更新时间:2023-12-01 13:06:42 25 4
gpt4 key购买 nike

你们所有人都同意将性能计数器用于服务器应用程序的值(value)。

我想知道如何使用 C# 实现这些。

通常性能计数器具有以下属性:

  1. 它们是共享的/全局的
  2. 写入需要锁来保证同步
  3. 阅读有时也需要锁

异步更新它们更好吗?使它们异步的最佳方法是什么?

我打算使用 ThreadPool.QueueUserWorkItem() 函数。您对此有何看法?

如果我的问题看起来有点含糊,请查看 HelloWorld WCF 服务。

我还想知道以下内容:

  1. 在一定时期内整体被击中的次数
  2. 总体和特定时期内的平均/最小/最大响应时间

如果有人知道在 .NET 或 WCF 中执行此操作的任何专门方法,请告诉我。

最佳答案

如果您使用 .NET classes为此,无需手动锁定性能计数器的增量、减量和查询 - 框架会为您完成。

如果您需要在 native 代码中使用性能计数器,您仍然应该使用 InterlockedIncrement() 和 friend 。

我认为异步更新性能计数器不是一个好主意,但您的经验可能会有所不同。如果有关某些有趣情况的数据是在事后到达的,则可以认为它的用处不大。在所有情况下,我不会只是为了更新性能计数器而对 ThreadPool 施加压力。现在,如果您无论如何都需要在线程中执行触发计数器的工作,那当然会有所不同。

一般来说,我认为性能计数器的更新不是真正的瓶颈,而是用于更新计数器的数据的收集。

例如,.NET GC 内存性能计数器仅在 GC 实际发生时更新,因为跟踪信息(在后台)只是为了在每次有机会时更新计数器太昂贵了(抱歉,这里没有引用,但有一些关于该特定主题的 MS 博客条目)。

最后,请注意WCF already provides开箱即用的大量计数器,可能已经涵盖了您现在想要的所有内容。

关于.net - 服务器开发中的性能计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2558338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com