问题标签 [performancecounter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
30831 浏览

c# - C# 程序能否以某种方式测量其自身的 CPU 使用率?

我正在开发一个将运行很长时间的后台程序,并且我有一个外部日志记录程序(SmartInspect),我想定期提供一些值,以便在调试时实时监控它。

我知道我可以简单地启动多个程序,例如任务管理器或 IARSN TaskInfo,但我想为此将所有内容保留在我自己的程序中,因为我还想添加一些简单的规则,例如程序是否使用超过X% CPU,在日志中标记这个。

我有一个后台线程,它会定期向 SmartInspect 提供一些统计信息,例如内存消耗、工作集等。

该线程是否有可能对它消耗的计算机 CPU 资源量进行合理准确的测量?主程序是一个单线程应用程序(除了记录统计信息的看门狗线程),因此如果一项技术仅限于单个线程使用多少,那也很好。

我发现了一些与Linux 和 C 的rusage相关的条目。我可以使用类似的东西吗?


编辑:好的,我尝试了性能计数器的方式,但每次调用它都会添加相当多的 GC 数据,因此内存使用和垃圾收集的图表猛增。我想我现在就把这部分放在一边。

0 投票
6 回答
12988 浏览

performance - 性能计数器的性能影响是什么

在考虑将性能计数器用作我公司的基于 .NET 的站点时,我想知道使用它们的开销有多大。

我是想让我的网站不断更新它的计数器还是我最好只在我测量时才这样做?

0 投票
1 回答
1659 浏览

unit-testing - 如何从 MS Test 中读取“.NET Data Provider for SqlServer”性能计数器?

如何从 MS Test 中的单元测试中读取“.NET Data Provider for SqlServer”类别的性能计数器“NumberOfActiveConnections”?

我正在尝试以下操作,但似乎我弄错了实例名称。MSDN 文档声称这是获取 WinForms 应用程序实例名称的正确方法,但这不适用于 MS Test:

从 MS Test 运行上面的代码时,我null从调用中返回GetEntryAssembly()

我也尝试过使用 MS 测试过程的名称和其他变体,但没有任何运气。

这是当我使用上面的任何实例名称时将引发异常的示例代码:

根据MSDN 文档,我通过将其添加到 app.config 来启用“NumberOfActiveConnections”计数器:

也许问题是性能计数器是为 MS 测试主机域启用的,但不是为实际运行测试的域启用的?

0 投票
6 回答
4305 浏览

.net - 跨应用域回收使用自定义性能计数器

我有一个 ASP.NET 应用程序,它通过创建和写入自定义性能计数器来跟踪统计信息。有时,我在错误日志中看到指示计数器无法打开,因为它们已在当前进程中使用。我认为这是由于我的 .NET appdomain 已在同一个 w3wp.exe 进程中重置。当我的应用程序域被回收时,如何避免这些错误并重新建立与我的性能计数器的连接?

柜台建设:

计数器用法:

[2009 年 3 月 26 日更新] 收到的错误消息是:

实例“_lm_w3svc_1_root_myapp”已经存在,进程的生命周期。在它被删除或使用它的进程退出之前,它不能被重新创建或重用。已经存在一个生命周期的进程。

我试图通过初始化性能计数器并在瞬态 AppDomain 中写入其中一个来在控制台应用程序中复制异常。然后我卸载 AppDomain 并在第二个 Appdomain 中再次执行此操作(相同的过程)。他们都成功了。我现在不确定这是什么原因,我对 ASP.NET 中 AppDomain 回收的假设似乎是错误的。

0 投票
2 回答
10748 浏览

c# - 如何确定 ASP.Net 缓存的总大小?

我在一个 Web 项目中使用 ASP.net 缓存,我正在为它编写一个“状态”页面,它显示缓存中的项目,以及我能找到的关于缓存的尽可能多的统计信息。有什么方法可以获得缓存数据的总大小(以字节为单位)?每个项目的大小会更好。我想在网页上显示它,所以我认为我不能使用性能计数器。

0 投票
1 回答
5225 浏览

c# - 计数器不是单实例,需要指定实例名称

在开发性能监控控制台应用程序时,将什么传递到 getcategories 方法中?:

使用无参数重载时,会引发运行时异常:

计数器不是单个实例,需要指定实例名称。

另外,您如何在静态实用程序方法或扩展方法之间做出选择?例如,我可能会经常使用某个实用程序方法,但最好将其添加为扩展方法,这样我就不必一直引用另一个程序集。

谢谢

0 投票
2 回答
4024 浏览

windows - QueryPerformanceCounter 和线程安全

我正在考虑在两个同时处于活动状态的线程中对 QueryPerformanceCounter 进行重复调用(旋转)。我不确定这是否真的是一个问题,因为我没有看到任何关于它的文章,但是 QueryPerformanceCounter 线程安全吗?

谢谢

0 投票
1 回答
1779 浏览

c# - ASP.NET/C# - 自定义 PerformanceCounters 仅显示在 64 位系统上的 32 位 perfmon

我正在尝试创建一组供我的 ASP.NET 应用程序使用的自定义性能计数器。我使用以下代码来增加计数器:

这在单元测试中以及在我的开发盒(Vista Business x64)上的 Cassini 中都非常有效,并且我可以观察在性能监视器中工作的计数器。但是,在我的生产环境(Win Server 2003 x64)中,计数器似乎没有记录任何增量。计数器实例本身是可用的,但它们都只显示“--”用于最后/平均/最小/最大显示。

关于我可能做错了什么的任何想法?

编辑:是我用作参考的 [可能有些过时的] MSDN 文章

编辑 2:我正在使用 VS 2008/.NET Framework v3.5 SP1,如果这有什么不同的话。

编辑 3:刚刚发现这篇关于 32 bit/64 bit app and monitor mismatching的文章,但我不确定它如何适用于我的情况,如果有的话。Cassini 确实是一个 32 位应用程序,但我在 64 位系统上查看值没有问题。在我的生产服务器上,应用程序和系统都是 64 位的,但我看不到值。

编辑 4:当我在生产服务器上运行 32 位 perfmon 时,显示这些值。所以我想现在的问题是为什么我不能读取 64 位 perfmon 中的值?

编辑 5:它实际上似乎在工作,只是我不得不重新启动我的 perfmon 实例,因为它在创建计数器之前是打开的。

0 投票
2 回答
479 浏览

.net - 到 PerformanceCounter 还是编写自定义监控?

我有一个 Windows 服务,它跨多个线程运行框架的实现。每个正在运行的实例都有几个共同点,我需要跟踪它们,例如,处理的项目数量、上次处理项目的时间等。在此基础监控数据之上,我想在框架以允许实现动态添加自己的监控数据。

我以前使用过 PerformanceCounters,虽然它们提供了不错的功能,但我发现创建和维护它们的代码非常繁琐,并且加载了与实例相关的陷阱的可能性(即硬编码计数器实例名称、类别名称和计数器类型)。此外,我不确定是否可以在不编写大量代码的情况下提供简单的基本功能动态计数器创建。

有没有人使用 PerformanceCounters 实现过类似的东西?如果是这样,你会推荐它吗?如果没有,是否有人建议我可以轻松地将性能/健康监控数据写入不会引入 1)很多减速和 2)另一个故障点的介质?

谢谢,如有必要,我很乐意补充说明,因为我知道这有点含糊。

结论:

我最终实现了性能计数器。这有点像 PITA(呵呵),但我的老板真的很喜欢这个想法,现在我已经想通了,还不错。我希望通过一种更简单的方式来呈现分层数据,从而更容易配置一些东西。但这很好用,而且很难与内置界面争论。

0 投票
3 回答
1530 浏览

.net - 如何在 w2k8 中使用性能计数器

问题:

我可以使用普通用户权限在 w2k8 中添加+使用性能计数器。

如果我尝试创建或访问进程性能计数器,我会收到计数器不存在的消息。

可以在 powershell 中尝试相同的操作,显示计数器不存在的消息。

如果我与管理员帐户(不是任何管理员帐户,管理员帐户)做同样的事情,我可以毫无问题地访问计数器。

其他计数器(如处理器)与普通用户或管理员用户帐户一起工作正常。

那么在不需要管理员帐户的情况下从(比如说.net)程序访问进程计数器需要什么?

蒂亚

ps 不,我不会登录。不喜欢 OpenID