【问题标题】:C# - Quartz scheduler stopped running when no activity on the siteC# - 当站点上没有活动时,Quartz 调度程序停止运行
【发布时间】:2016-07-14 09:11:50
【问题描述】:

我用石英调度器创建了 asp.net 站点。该作业正在后台运行,站点上没有其他活动。

Quartz 调度器每 30 分钟调度一次。

IIS 启动后,Scheduler 运行正常。

但一段时间后,Scheduler 停止运行(大约 1 小时)。

如果作为用户登录或查看仪表板在站点上有一项或多项活动,则调度程序运行正常。

但是当现场没有活动时,它会停止运行。

当现场没有活动时,如何让我的调度程序一直保持活动状态?

P/s:我知道我的问题可能与其他问题重复。但我仍然问,因为我无法评论其他问题的答案。

编辑:

Day Running at: 7/14/2016 4:00:00 AM
--
Day Running at: 7/14/2016 4:30:00 AM
--
Day Running at: 7/14/2016 5:00:00 AM
--
Stopped running
--
Day Running at: 7/14/2016 2:00:00 PM
--
Day Running at: 7/14/2016 2:30:00 PM
--
Day Running at: 7/14/2016 3:00:00 PM
--
Stopped running
--

【问题讨论】:

    标签: c# asp.net quartz-scheduler


    【解决方案1】:

    默认情况下,如果应用程序在一段时间内没有收到请求,IIS 将卸载您的应用程序。

    您可以将 IIS 配置为从不卸载您的应用程序。IIS 卸载您的应用程序的原因有很多 - 请确保您禁用所有这些。它在应用程序池设置中,最好转到高级设置并仔细通过所有这些设置。

    附带说明,如果您有一个后台作业需要按计划可靠地运行,除了 Web 应用程序之外,为什么不将它部署在 Windows 服务中呢? Web 应用程序最擅长处理传入的请求,而不是运行计划的作业。

    更新

    在应用程序池的高级设置中查看这些:

    • 进程模型/空闲超时和空闲超时操作
    • 回收/定期时间间隔、请求限制、私有内存限制、虚拟内存限制

    【讨论】:

    • 我有一些理由在 Web 应用程序中使用后台作业。我尝试设置增加会话超时空闲,但我的工作仍然停止运行。那么,您能否为我提出一些 IIS 将卸载我的应用程序的原因?
    • @TonyBui : 共享主机? :)
    • @AndreiRînea:不,我将我的 Web 应用程序托管在私有主机中。
    • 默认情况下,如果 20 分钟(1200 秒)没有收到任何请求,IIS 将卸载 AppPool。
    • @AndreiRînea:高级设置/空闲超时 20 分钟?
    【解决方案2】:

    通常you shouldn't use ASP.NET for recurring tasks 因为它不是为此而构建的,因此建议使用 Windows 服务。

    但是,您可以使用WebBackgrounder。 Scott Hanselman 似乎 endorse it ;) 他还演示了如何将 Quartz.NET 与它一起使用。


    或者您可以启动一个线程,每分钟从您的应用程序向自身生成请求,以保持它的运行:

        protected void Application_Start()
        {
            // ...
    
            ThreadPool.QueueUserWorkItem(o => PingMyself());
        }
    
        private static void PingMyself()
        {
            var webClient = new WebClient();
            while (true)
            {
                Thread.Sleep(TimeSpan.FromMinutes(1));
                webClient.DownloadString("http://my.public.address.com");
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      • 2017-09-05
      相关资源
      最近更新 更多