【问题标题】:Is this a safe way of keeping an asp.net application alive without getting recycled?这是保持 asp.net 应用程序不被回收的安全方法吗?
【发布时间】:2010-09-02 21:21:03
【问题描述】:

我已经在Applicaiton_startglobal.asax 中启动了一个计时器,每20 分钟访问一次我的应用程序。

void Application_Start(object sender, EventArgs e) 
{
System.Timers.Timer tm = new System.Timers.Timer(20 * 60 * 1000);
tm.Elapsed += new System.Timers.ElapsedEventHandler(tm_Elapsed);
}

void tm_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
System.Net.WebRequest rqst = System.Net.WebRequest.Create("MySite URL");
rqst.GetResponse();
}

这是一种安全的方式还是其他方式。我这样做是为了使用quartz.net 执行计划作业...

【问题讨论】:

    标签: asp.net web-applications keep-alive


    【解决方案1】:

    虽然自动执行应用程序是使其保持活动状态的一种方式,但您也可以将 IIS 中的应用程序池配置为不回收:

    只需取消选中 Shutdown worker processes after being idle for 复选框即可。此外,在Recycling 选项卡上,您还可以找到其他有用的选项。

    【讨论】:

    • @Pandiya - 如果您在共享托管环境中,那么您无法阻止回收 - 请参阅我的回答 - 无论当时网站有多忙,都会发生这种情况。
    【解决方案2】:

    您应该能够修改 IIS 来执行此操作。 IIS 设置为在“x”分钟不活动后关闭应用程序。由于不活动,您的代码可能会阻止该站点被删除。

    但是,IIS 也默认设置为每“x”分钟/小时回收一次应用程序。您的代码不会阻止这一点。无论活动如何,它都会发生。它旨在清除任何内存泄漏等,因此如果您将其关闭(您也可以在 IIS 中执行此操作),那么您必须小心您的网站性能不会随着时间的推移而降低。

    【讨论】:

    • 我是共享主机,所以无法获取 iis 设置
    • 我猜在这种情况下你能做的最好的就是你的建议——但我会将计时器设置为 19 分钟。如果 IIS 设置为在 20 分钟不活动后关闭您的网站,您不希望您的计时器也设置为 20 分钟。
    猜你喜欢
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 2016-07-16
    相关资源
    最近更新 更多