【问题标题】:ASP.Net Application Idle Timeout and App Pool RecyclingASP.Net 应用程序空闲超时和应用程序池回收
【发布时间】:2016-08-30 07:48:07
【问题描述】:

我有以下作业计划每分钟运行一次,使用 hangfire 来尝试保持我的网站活跃,但它似乎仍然闲置?我刚刚检查了 hangfire 仪表板,看起来这项工作从未在周末运行过,大概是因为没有人访问该站点(注意它是一个 Intranet 应用程序)

 try
 {
    var url = "http://xyz.domain.com/myapp"
    var request = (HttpWebRequest)WebRequest.Create(url);
    request.Timeout = 6000;
    request.AllowAutoRedirect = false; 
    request.Method = "HEAD";

    using (var response = request.GetResponse())
    {
               // TO DO
    }
 }
 catch (Exception ex)
 {
     logger.Error(ex, "Error in KeepAlive job");
 } 

使用 webclient 会更可靠还是和使用 HttpWebRequest 一样 - 如下所示:

WebClient webClient = new WebClient();
Stream stream = webClient.OpenRead("http://xyz.domain.com/myapp"); 

【问题讨论】:

    标签: iis-7 httpwebrequest webclient application-pool hangfire


    【解决方案1】:

    默认情况下,Web 应用程序中的 Hangfire Server 实例在第一个用户访问您的网站之前不会启动。更重要的是,有些事件会在一段时间后使您的 Web 应用程序停止运行(我说的是空闲超时和不同的应用程序池回收事件)。在这些情况下,您的重复任务和延迟作业将不会被排队,并且排队的作业将不会被处理。

    对于较小的网站尤其如此,因为用户可能会长时间处于不活动状态。但如果您正在运行关键作业,则应确保您的 Hangfire Server 实例始终在运行,以保证及时处理后台作业。

    http://docs.hangfire.io/en/latest/deployment-to-production/making-aspnet-app-always-running.html

    【讨论】:

      猜你喜欢
      • 2011-01-12
      • 2010-12-08
      • 2011-08-22
      • 2020-05-23
      • 2020-01-21
      • 2018-07-03
      • 2015-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多