Tag: 计数器

C#:访问“.NET CLR内存类别”的PerformanceCounters

我正在尝试使用PerformanceCounter类通过C#访问位于“.NET CLR内存类别”中的性能计数器。 但是,无法使用我期望的正确类别/计数器名称来实例化类别 new PerformanceCounter(“.NET CLR Memory”, “# bytes in all heaps”, Process.GetCurrentProcess().ProcessName); 我尝试使用以下代码循环遍历类别和计数器 string[] categories = PerformanceCounterCategory.GetCategories().Select(c => c.CategoryName).OrderBy(s => s).ToArray(); string toInspect = string.Join(“,\r\n”, categories); System.Text.StringBuilder interestingToInspect = new System.Text.StringBuilder(); string[] interestingCategories = categories.Where(s => s.StartsWith(“.NET”) || s.Contains(“Memory”)).ToArray(); foreach (string interestingCategory in interestingCategories) { PerformanceCounterCategory cat = new PerformanceCounterCategory(interestingCategory); foreach (PerformanceCounter counter in […]

发送/接收的网络丢失

我在这里听到了答案: 计算带宽 并实施了他所说的一切。 我的监视器初始化如下: netSentCounter.CategoryName = “.NET CLR Networking”; netSentCounter.CounterName = “Bytes Sent”; netSentCounter.InstanceName = Misc.GetInstanceName(); netSentCounter.ReadOnly = true; 我可以正确地看到Misc.GetInstanceName()返回“MyProcessName [id]”。 但是,我不断得到实例在指定类别中不存在的exception。 我的理解是,在您实际发送或接收之前,不会创建网络发送/接收的类别。 我按照答案中的说明添加了app.config,如下所示: 为什么我仍然会收到错误? 这是我的监控代码: public static class Monitoring { private static PerformanceCounter netSentCounter = new PerformanceCounter(); //Static constructor static Monitoring() { netSentCounter.CategoryName = “.NET CLR Networking”; netSentCounter.CounterName = “Bytes Sent”; netSentCounter.InstanceName = Misc.GetInstanceName(); […]

性能计数器平均计时器如何与其基础相关联?

我正在为我的c#项目添加一些性能计数器,并创建一个新的PerformanceCounterCategory。 在这个类别中,我想有多个计数器/计时器来跟踪不同的事情。 我需要使用多个平均计时器,并且我试图理解当CoutnerCreationDataCollection中有多个计时器时,AverageBase计数器如何与正确的AverageTimer32计数器相关联。 几个问题: 1.首先,这是一个正确的方法吗? 我发现的样本都只有一个平均计时器。 2.如果第一个问题的答案是肯定的,那么我认为第一个AverageBase计数器是在AverageTimer32之后添加到集合中的吗? 我确实在文章中找到了一个需要按顺序添加的参考。 这是我想要做的一个例子: var dataColl = new CounterCreationDataCollection { new CounterCreationData { CounterType = PerformanceCounterType.AverageTimer32, CounterName = “AverageTime1”, CounterHelp = “AverageTime1_Help” }, new CounterCreationData // Does this get linked to AverageTime1 simply // because it is being added after it? { CounterType = PerformanceCounterType.AverageBase, CounterName = “AverageTime1Base” }, new […]

为什么使用平均值时图表会很尖锐?

我在我的WCF服务中使用messageInspectors来测量每个服务方法的经过时间,如下所示: public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState) { if (_activated) { _startTime.Stop(); PerformanceCounterHandler.Instance.SetAveragePerformanceCounter(operationName, _startTime.ElapsedTicks); } } public object BeforeCall(string operationName, object[] inputs) { Guid correlationState; if (_activated) { correlationState = Guid.NewGuid(); _startTime = new Stopwatch(); _startTime.Start(); return correlationState; } return null; } 这是计数器的注册方式 foreach (string methodName in ServiceMethodNames) { counter = […]

检索进程网络使用情况

如何获取进程发送/接收字节? 首选方法是使用C#。 我搜索了很多,但我没有找到任何简单的解决方案。 一些解决方案建议在机器上安装WinPCap并使用此lib。 喜欢这个人问: 在托管代码中需要“具有网络活动的进程”function – 就像resmon.exe一样,我不想要lib的开销。 有一个简单的解决方案吗? 实际上我想要Windows资源监视器在“带网络活动的进程”选项卡下提供的确切数据: Windows的资源监视器如何获取此信息? 任何例子? 此外,尝试使用此处提到的计数器方法: 发送/接收的网络丢失但没有成功 – 因为并非每个进程都显示在此计数器下。 我再次想知道资源监视器如何在不使用此计数器的情况下获取此信息…

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

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