/// <summary> /// 移除计数器 /// </summary> /// <param name="name"></param> public static void RemoveMonitor(string name) { MonitorData md = null; ExceptionHelper.FalseThrow(StopWatchContextCache.Instance.TryGetValue(name, out md), "不能找到名称为{0}的MonitorData"); md.Stopwatch.Stop(); StopWatchContextCache.Instance.Remove(name); }
/// <summary> /// 得到默认的Monitor /// </summary> /// <returns></returns> public static MonitorData GetDefaultMonitor() { MonitorData md = null; if (StopWatchContextCache.Instance.TryGetValue(DefaultMonitorName, out md) == false) { md = StartMonitor(DefaultMonitorName); } return(md); }
/// <summary> /// 得到指定名称的监控数据 /// </summary> /// <param name="name"></param> /// <returns></returns> public static MonitorData GetMonitor(string name) { ExceptionHelper.CheckStringIsNullOrEmpty(name, "name"); MonitorData md = null; ExceptionHelper.FalseThrow(StopWatchContextCache.Instance.TryGetValue(name, out md), "不能找到名称为{0}的MonitorData"); return(md); }
/// <summary> /// 开始执行计数 /// </summary> /// <param name="name"></param> /// <returns></returns> public static MonitorData StartMonitor(string name) { ExceptionHelper.CheckStringIsNullOrEmpty(name, "name"); ExceptionHelper.TrueThrow(StopWatchContextCache.Instance.ContainsKey(name), "已经启动了名称为{0}的MonitorData", name); MonitorData md = new MonitorData(); StopWatchContextCache.Instance.Add(name, md); md.Stopwatch.Start(); return(md); }
private void SetCountersValue(MonitorData md) { PMPerformanceCounters counters = PMPerformanceCounters.GetCounters(md.InstanceName); counters.PageAccessCount.Increment(); counters.PageAccessCountPerSecond.Increment(); if (md.HasErrors) counters.PageErrorCount.Increment(); else { counters.PageSuccessCount.Increment(); counters.PageSuccessRatio.Increment(); } counters.PageSuccessRatioBase.Increment(); counters.PageAccessCurrentAverageBase.Increment(); counters.PageAccessCurrentAverage.IncrementBy(md.Stopwatch.ElapsedTicks); counters.PageAccessTotalAverageBase.Increment(); counters.PageAccessTotalAverage.IncrementBy(md.Stopwatch.ElapsedMilliseconds / 100); }
private void CommitLogging(MonitorData md) { StringBuilder strB = ((StringWriter)md.LogWriter).GetStringBuilder(); if (strB.Length > 0) { try { Logger logger = LoggerFactory.Create("PageMonitor"); if (logger != null) logger.Write(strB.ToString(), LogPriority.Normal, 8005, TraceEventType.Information, "页面访问日志"); } catch (System.Exception) { } } }
private static void SetOnePFInstanceValues(WebMethodServerCounters instance, MonitorData md, bool hasErrors) { instance.RequestCount.Increment(); instance.RequestAverageDurationBase.Increment(); instance.RequestAverageDuration.IncrementBy(md.Stopwatch.ElapsedMilliseconds / 100); if (hasErrors) instance.RequestFailCount.Increment(); else instance.RequestSuccessCount.Increment(); instance.RequestsPerSecond.Increment(); }
private static void SetCountersValues(MonitorData md, bool hasErrors) { WebMethodServerCounters global = (WebMethodServerCounters)md.Context["GlobalInstance"]; WebMethodServerCounters instance = (WebMethodServerCounters)md.Context["Instance"]; SetOnePFInstanceValues(global, md, hasErrors); SetOnePFInstanceValues(instance, md, hasErrors); }