爱上MVC3系列~监视Action的运行时间,并提供超时记录机制_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 爱上MVC3系列~监视Action的运行时间,并提供超时记录机制

爱上MVC3系列~监视Action的运行时间,并提供超时记录机制

 2014/6/30 16:23:09  张占岭  程序员俱乐部  我要评论(0)
  • 摘要:回到目录文章出现的原因很久没写关于MVC的文章了,原因是将关注点移向了MVVM和DDD这边,而这篇文章完全是因为公司项目的需要,因为公司网站总是不定时的502,而这由可能是程序超时所引起的,为了分析出现问题的点,所以,对action进行了监控,这个监控功能我选择了在global里注入全局的filter来实现这个功能,为了避免并发,所选择了将记录存储到cache的队列里,再通过quartZ的任务调度功能,来实现数据的IO写入或者数据库与入.系统流程图用代码说话1建立一个Filter///<
  • 标签:MVC 运行 超时

回到目录

文章出现的原因

很久没写关于MVC的文章了,原因是将关注点移向了MVVM和DDD这边,而这篇文章完全是因为公司项目的需要,因为公司网站总是不定时的502,而这由可能是程序超时所引起的,为了分析出现问题的点,所以,对action进行了监控,这个监控功能我选择了在global里注入全局的filter来实现这个功能,为了避免并发,所选择了将记录存储到cache的队列里,再通过quartZ的任务调度功能,来实现数据的IO写入或者数据库与入.

系统流程图

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" alt="" />

用代码说话

1 建立一个Filter

   /// <summary>
    /// Action渲染页面所需要的时间
    /// </summary>
    public class ActionRenderTimeAttribute : System.Web.Mvc.ActionFilterAttribute
    {
      

        /// <summary>
        /// 锁对象
        /// </summary>
        static object lockObj = new object();
        /// <summary>
        /// 记录进行Action的时间
        /// </summary>
        DateTime joinTime;
        /// <summary>
        /// 进行action之前
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext filterContext)
        {
            joinTime = DateTime.Now;
            base.OnActionExecuting(filterContext);
        }
        /// <summary>
        /// 渲染页面HTML之后
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnResultExecuted(System.Web.Mvc.ResultExecutedContext filterContext)
        {
            int outSeconds;//! 超时的秒数,默认为60S
            int.TryParse((System.Configuration.ConfigurationManager.AppSettings["ActionRenderTime"] ?? "60").ToString(), out outSeconds);
            var timeSpan = (DateTime.Now - joinTime).Seconds;
            if (timeSpan > outSeconds)
            {
                lock (lockObj)
                {
                    var temp = (System.Web.HttpRuntime.Cache["RunTime"] as Queue<Tuple<int, string>>) ?? new Queue<Tuple<int, string>>();
                    temp.Enqueue(new Tuple<int, string>(timeSpan, filterContext.RequestContext.HttpContext.Request.Url.AbsoluteUri));
                    System.Web.HttpRuntime.Cache.Insert("RunTime", temp);
                }
            }

            base.OnResultExecuted(filterContext);
        }


    }

2 为filter加全局注入点

 public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
            filters.Add(new MVVM.ActionRenderTimeAttribute());
        }
    }

3 建立一个QuartZ的任务

   /// <summary>
    /// 工作任务基类
    /// </summary>
    public abstract class JobBase
    {
        /// <summary>
        /// log4日志对象
        /// </summary>
        protected log4net.ILog Logger
        {
            get
            {
                return log4net.LogManager.GetLogger(this.GetType());//得到当前类类型(当前实实例化的类为具体子类)
            }
        }
    }
    public class ActionTimeJob : JobBase, IJob
    {

        #region Fields & Properties
        /// <summary>
        /// 锁对象
        /// </summary>
        private static object lockObj = new object();
        #endregion

        #region IJob 成员

        public void Execute(IJobExecutionContext context)
        {
            lock (lockObj)
            {
                try
                {
                    if ((System.Web.HttpRuntime.Cache["RunTime"] as Queue<Tuple<int, string>>) != null
                        && (System.Web.HttpRuntime.Cache["RunTime"] as Queue<Tuple<int, string>>).Count > 0)
                    {
                        var temp = (System.Web.HttpRuntime.Cache["RunTime"] as Queue<Tuple<int, string>>).Dequeue();
                        if (temp != null)
                        {
                            //! 超时,开始记录日志
                            global::Logger.Core.LoggerFactory.Instance.Logger_Info(
                                        string.Format("出现异常的页面:{0},页面加载需要的时间:{1}秒,异常发生时间:{2}"
                                        , temp.Item2, temp.Item1, DateTime.Now),"actionTime.log");
                        }
                    }
                }
                catch (Exception ex )
                {

                    throw ex;
                }
            }
        }

        #endregion
    }

4 在global里配置QuartZ注入点

#region quartZ调度中心
            const string DEFAULTINTERVAL = "300";//默认为5分钟
            string user_Classroom_RJobInterval = ConfigurationManager.AppSettings["ActionRunTimeJob"]
          ?? DEFAULTINTERVAL;

            ISchedulerFactory sf = new Quartz.Impl.StdSchedulerFactory();
            IScheduler sched = sf.GetScheduler();
            //一个工作可以由多个组组成,而每个组又可以由多个trigger组成
            IDictionary<IJobDetail, IList<ITrigger>> scheduleJobs = new Dictionary<IJobDetail, IList<ITrigger>>();

            #region ActionRunTimeJob
            scheduleJobs.Add(JobBuilder.Create<ActionTimeJob>()
               .WithIdentity("job1", "group1")
               .Build(),
               new List<ITrigger> 
                    { 
                     (ICronTrigger)TriggerBuilder.Create()
                                                 .WithIdentity("trigger", "group1")
                                                 .WithCronSchedule(user_Classroom_RJobInterval)
                                                 .Build() 
                    });

            sched.ScheduleJobs(scheduleJobs, true);
            sched.Start();
            #endregion
            #endregion

5 在config里配置相关调度和性能监控的信息

    <!-- 每次得到的数据行数,以便减少内存的占用-->
    <add key="DataRow" value="1"/>
    <!-- 每3秒执行一次-->
    <add key="ActionRunTimeJob" value="0/3 * * * * ?"/>
    <!-- 每页面渲染时间超时为1秒-->
    <add key="ActionRenderTime" value="1"/>
    <!-- 是否开启action性能监控-->
    <add key="isActionRender" value="1"/>

6 程序效果截图

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" alt="" />

回到目录

发表评论
用户名: 匿名