1
ASP.NET MVC 3에서 다중 인스턴스 성능 카운터를 작동시키는 데 문제가 있습니다. 단일 인스턴스로 생성하여 다중 인스턴스를 실행하는 중입니다. 간단한 콘솔 응용 프로그램의 perf counter 코드는 잘 작동합니다. 그러나 다중 인스턴스를 만들고 ASP.NET을 사용하여 인스턴스를 늘리려고하면 어려움을 겪습니다.내 ASP.NET MVC 다중 인스턴스 성능 카운터가 작동하지 않는 이유
예외가 없습니다. perf mon에서 측정 결과가 표시되지 않습니다. 그러나 2 개의 인스턴스를 볼 수 있습니다.
private static readonly Random _Random = new Random(); private const string PERF_COUNTER_CATEGORY_NAME = "MvcPerformance"; private const string PERF_COUNTER_BASE_NAME = "MvcAction_Base"; private const string PERF_COUNTER_NAME = "MvcAction"; private static PerformanceCounter _MvcActionCounter = new PerformanceCounter { CounterName = PERF_COUNTER_NAME, CategoryName = PERF_COUNTER_CATEGORY_NAME, ReadOnly = false, InstanceName = "Home_Index", }; private static PerformanceCounter _MvcActionCounterBase = new PerformanceCounter { CounterName = PERF_COUNTER_BASE_NAME, CategoryName = PERF_COUNTER_CATEGORY_NAME, ReadOnly = false, InstanceName = "Home_Index_Base", }; public ActionResult Index() { Stopwatch s = new Stopwatch(); s.Start(); Thread.Sleep(_Random.Next(1000)); s.Stop(); // Increment the performance counters. _MvcActionCounter.IncrementBy(s.ElapsedMilliseconds); _MvcActionCounterBase.Increment(); return View(new HomeViewModel { ElapsedTime = s.Elapsed }); }
:
이private const string PERF_COUNTER_CATEGORY_NAME = "MvcPerformance";
private const string PERF_COUNTER_BASE_NAME = "MvcAction_Base";
private const string PERF_COUNTER_NAME = "MvcAction";
static void Main(string[] args)
{
if (PerformanceCounterCategory.Exists(PERF_COUNTER_CATEGORY_NAME))
{
PerformanceCounterCategory.Delete(PERF_COUNTER_CATEGORY_NAME);
}
CounterCreationDataCollection counters = new CounterCreationDataCollection();
// Add the counter.
CounterCreationData avgDuration = new CounterCreationData();
avgDuration.CounterType = PerformanceCounterType.AverageTimer32;
avgDuration.CounterName = PERF_COUNTER_NAME;
counters.Add(avgDuration);
CounterCreationData avgDurationBase = new CounterCreationData();
avgDurationBase.CounterName = PERF_COUNTER_BASE_NAME;
avgDurationBase.CounterType = PerformanceCounterType.AverageBase;
counters.Add(avgDurationBase);
// Create the category.
PerformanceCounterCategory.Create(PERF_COUNTER_CATEGORY_NAME, "Performance counters for MVC!", PerformanceCounterCategoryType.MultiInstance, counters);
}
그런 다음 ASP.NET MVC 응용 프로그램에서 우리의 HomeController는 다음과 같은 :
이
은 성능 카운터 범주를 만들 수있는 콘솔 응용 프로그램 코드 아마 내가 잊어 버리는 것은 쉽지 않을 것입니다. 권리 또는 사용자 관리와 관련이있을 수 있습니까?
혹시 블로그를하거나 간단한 샘플 응용 프로그램을 제공 할 수 있습니까? 나는 이것이 perf 테스트에 매우 유용 할 것이라고 생각한다. – RickAndMSFT