标签: perfmon

如何衡量Live ASP.NET MVC Web应用程序的内存使用情况?

所以,马上就不知道这个问题是否更适合另一个StackExchange站点.

我有一个在Windows Server 2008和IIS 7.5上运行的ASP.NET MVC 3 Web应用程序

网站最初运行良好,但我可以看到内存使用量逐渐增长.大约12个小时后,它几乎没有内存,网站窒息.

我正在使用大量的缓存,所以我认为这与一些可能的内存泄漏相结合是导致问题的原因.

所以我的问题 -在运行ASP.NET MVC的Web服务器上监视内存使用情况的最佳方法(例如工具)是什么?

在过去,我使用了旧的'perfmon并将IIS计数器用于测量这些东西.

这仍然是最好的方式,如果是这样,有人可以为我的场景推荐一个好的perfmon计数器模板吗?

asp.net asp.net-mvc performance webserver perfmon

25
推荐指数
1
解决办法
1万
查看次数

创建PerfMon计数器以记录每次调用的平均值(C#)

如何使用PerfMon计数器记录C#中方法的平均执行时间?

到目前为止,我只找到了增加或减少PerfMon计数器的示例代码.

c# perfmon

22
推荐指数
2
解决办法
3万
查看次数

Perfmon计数器检查内存泄漏

我想检查一下我服务中的内存泄漏问题.我试过以下一组perfmon计数器.

  1. 所有堆中的.NET CLR内存\#字节
  2. .NET CLR内存\ Gen 2堆大小
  3. .NET CLR Memory \#GC句柄
  4. .NET CLR Memory \#固定对象
  5. .NET CLR Memory\#total committed Bytes
  6. .NET CLR Memory\#total保留字节数
  7. .NET CLR内存\大对象堆大小

我在这里提到了上面的集合

还提到以下集:

  1. 内存/可用字节
  2. 内存/承诺字节
  3. 流程/私有字节
  4. 进程/页面文件字节
  5. 处理/处理计数

我在这里提到了上面的集合

是否有任何参数/标准或任何其他最佳方法来识别内存泄漏的perfmon计数器?
任何人都可以建议我使用一组计数器来检查内存泄漏吗?或以上设置涵盖内存泄漏?

performance memory-leaks perfmon performancecounter memory-leak-detector

21
推荐指数
1
解决办法
5万
查看次数

为什么不能看到我的自定义性能计数器的实例?

我正在为应用程序创建一些自定义性能计数器.我写了一个简单的C#工具来创建类别和计数器.例如,下面的代码片段基本上就是我正在运行的代码片段.然后,我运行一个单独的应用程序,无休止地刷新计数器的原始值.当它运行时,计数器和虚拟实例在perfmon本地可见.

我遇到的问题是我们使用的监控系统无法看到我从另一台服务器远程查看时创建的多实例计数器中的实例.当使用perfmon浏览计数器时,我可以看到类别和计数器,但实例框显示为灰色,我甚至无法选择"所有实例",也无法单击"添加".使用其他访问方法,如[typeperf][1]展示类似的问题.

我不确定这是服务器还是代码问题.这只能在我需要的生产环境中重现.在我的桌面和开发服务器上,它运行良好.我是所有服务器上的本地管理员.

CounterCreationDataCollection collection = new CounterCreationDataCollection();

var category_name = "My Application";
var counter_name = "My counter name";
CounterCreationData ccd = new CounterCreationData();
ccd.CounterType = PerformanceCounterType.RateOfCountsPerSecond64;
ccd.CounterName = counter_name;
ccd.CounterHelp = counter_name;
collection.Add(ccd);

PerformanceCounterCategory.Create(category_name, category_name, PerformanceCounterCategoryType.MultiInstance, collection);
Run Code Online (Sandbox Code Playgroud)

然后,在一个单独的应用程序中,我运行它来生成虚拟实例数据:

var pc = new PerformanceCounter(category_name, counter_name, instance_name, false);
while (true) {
   pc.RawValue = 0;
   Thread.Sleep(1000);
}
Run Code Online (Sandbox Code Playgroud)

.net perfmon

17
推荐指数
2
解决办法
8596
查看次数

PerformanceCounterCategory.GetCategories与Perfmon不一致

好的,所以我基本上试图创建一个已安装的性能计数器类别列表,就像你在PerfMon中获得的那样.为此,我正在使用

System.Diagnostics.PerformanceCounterCategory.GetCategories()
Run Code Online (Sandbox Code Playgroud)

这看起来很有效,直到你检查清单,并发现有些东西丢失了.我发现缺少的第一个是ReadyBoost Cache.这是因为该项目设置为在"x86"上编译.将此更改为"任何CPU"修复了该问题.

然而,仍然有一些缺失,例如,其中一个测试机器有一个"授权管理器应用程序"类别(我的没有,似乎没有人知道原因,或者它来自哪里)但是,在那台机器上,性能计数器类别显示在PerfMon中,但在GetCategories()从C#调用方法时则不显示.

有谁知道为什么?有更可靠的方法PerformanceCounterCategories吗?这是因为我正在使用.Net吗?我可以使用一些原生API吗?

编辑

对不起,我还是不明白.我编写这段代码或许可以更好地说明它:

using System;
using System.Diagnostics;
using System.Linq;
using System.Text.RegularExpressions;
using Microsoft.Win32;

namespace PccHack
{
    class Program
    {
        private static readonly Regex Numeric = new Regex(@"^\d+$");
        static void Main(string[] args)
        {
            var pcc1 = PerformanceCounterCategory.GetCategories();
            Console.Out.WriteLine("Getting automatically from the microsoft framework gave {0} results.", pcc1.Count());
            string[] counters;
            using (var regKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009"))
            {
                counters = regKey.GetValue("Counter") as string[];
            }
            var pcc2 = counters.Where(counter => !Numeric.IsMatch(counter)).ToList();
            pcc2.Sort();
            Console.Out.WriteLine("Getting manually from …
Run Code Online (Sandbox Code Playgroud)

.net c# perfmon performancecounter

14
推荐指数
2
解决办法
2292
查看次数

如何打开.coverage文件

我用了创建了一个.coverage文件Vsperfmon.exe

我目前正在使用VS 2012 professional for web许可版.该.coverage结果不能被打开VS Professional.谷歌搜索后,我知道VS Ultimate可以打开它

而不是使用VS Ultimate,是否有任何插件VS professional 2012或任何第三方解决方案

perfmon visual-studio-2010

11
推荐指数
1
解决办法
1万
查看次数

Perfmon .blg文件规范/解析库

在哪里可以找到Perfmon二进制.blg文件格式的详细的低级规范?或者甚至更好,是否有人编写了一个低级别的开源库(最好用C语言,但任何语言都可以)来解析.blg文件?

binary file-format perfmon

10
推荐指数
2
解决办法
3917
查看次数

PerformanceCounterCategory.GetCategories()抛出异常ArgumentException - 参数'categoryName'的值''无效

当我尝试运行此代码时:

var categories = System.Diagnostics.PerformanceCounterCategory.GetCategories();
Run Code Online (Sandbox Code Playgroud)

我得到一个ArgumentException异常.

我已经尝试了以下但没有运气:

  • 如何手动重建性能计数器库 http://support.microsoft.com/kb/300956
  • lodctr/R.
  • 以本地管理员身份登录.
  • 禁用用户访问控制(UAC)
  • 成为Performance Monitor Users组的用户成员.

无论我是在Windows 7 Enterprise SP1 64位计算机上运行Visual Studio 2008,2010还是2012,我都会得到相同的结果.

我将不胜感激任何帮助.

谢谢.

registry permissions perfmon access-denied

9
推荐指数
1
解决办法
1274
查看次数

数据收集器集中的奇怪值

我正在各种虚拟机上收集一些性能数据.DataCollectorSet初始化如下:

set.Subdirectory = set.name;
set.SubdirectoryFormat = AutoPathFormat.plaYearMonthDay;

var schedule = set.Schedules.CreateSchedule();
schedule.Days = WeekDays.plaEveryday;
schedule.StartDate = DateTime.Now;

set.Schedules.Add(schedule);

set.Commit(set.name, null, CommitMode.plaCreateNew);
Run Code Online (Sandbox Code Playgroud)

然后我添加一个收藏家:

var collector = (IPerformanceCounterDataCollector)set.DataCollectors.CreateDataCollector(DataCollectorType.plaPerformanceCounter);

collector.FileName = counterPath.Replace("\\", "_");
collector.LogAppend = true;
collector.FileNameFormat = AutoPathFormat.plaYearMonthDay;
collector.SampleInterval = 60u;
collector.SegmentMaxRecords = 1440;
collector.LogFileFormat = FileFormat.plaTabSeparated;

set.DataCollectors.Add(collector);

var counters = new string[1];
counters[0] = counterPath;
collector.PerformanceCounters = counters;

set.Commit(set.name, null, CommitMode.plaCreateOrModify);
Run Code Online (Sandbox Code Playgroud)

当我\LogicalDisk(_Total)\% Disk Time在几十台机器上运行时,我得到的值看起来像预期的百分比 - 它们大多在0.00到5.00左右,但有时候,在高活动期间,会达到两位数.

但是,在一台机器上,所有值都高于100.无论机器是否显示繁忙,它们都显示在大约120和170之间.同时,使用相同的计数器手动运行perfmon显示可能正确的值 - 忙时接近100%,否则保持在10%以下.

这是来自具有预期结果的机器的前几个输出线:

"(PDH-TSV 4.0)(MitteleuropäischeSommerzeit)( - 120)""\ BR-DOMAIN \LogischerDatenträger(_Total)\ Zeit(%)""08/04/2015 01:00:18.425""""08/04/2015 01:01:18.407""2.4181960253316448""08/04/2015 …

c# perfmon .net-4.0

9
推荐指数
1
解决办法
396
查看次数

ASP计数器 - 不同计数器"桶"中类似命名的计数器之间的差异

提出这个问题的最佳方式是举例.

拿柜台

\ ASP.NET \请求执行时间&\ ASP.NET \请求等待时间

ASP.NET Applications存储桶中有一些具有相同名称的计数器

\ ASP.NET应用程序\请求执行时间和\ ASP.NET应用程序\请求等待时间

谁知道两者之间的区别?有区别吗?是一个是另一个的子集/超集吗?

谢谢.

.net asp.net perfmon

8
推荐指数
1
解决办法
111
查看次数