【问题标题】:Ensure dot.net site always runs确保 dot.net 站点始终运行
【发布时间】:2010-12-19 14:47:41
【问题描述】:

我创建了一个非常小的监控网络应用程序,它会定期轮询其他网站以检查它们是否还活着。如果不是,我会收到一封电子邮件,以便我做出反应(例如,如果网站响应 503)

但是我的问题是,当 AppPool 回收时,monitor web-app 已关闭,并且它永远不会再次启动,因为它没有收到任何请求。

有没有办法确保它在回收、重新启动服务器或类似操作后重新启动?

目前它在 global.asax Application_Start 中启动一个后台线程,然后该线程负责通过轮询它以及其他站点来保持监视器 Web 应用程序的活动状态。

这样它就会时常收到一个 HTTP 请求。但是,这显然仅适用于在实际启动时使其保持活动状态。

我已经阅读了一些有关 IIS 预热模块的信息,但是该站点托管在我无法影响的服务器上,因此这是不可能的。

该站点使用 ASP.Net 4.0 构建,并在 IIS 7.5 服务器上运行。

希望你有一个想法:-)

【问题讨论】:

    标签: asp.net iis


    【解决方案1】:

    我使用uptime robot 来确保我的应用程序始终启动。这个系统的美妙之处在于它只询问您网站上页面的标题,并每 5 分钟获取一次状态代码,如“200-ok”、“404-not found”等。这意味着正常运行时间机器人不会向 Google Analytics 添加噪音,因为该页面从未被请求过。

    对我来说似乎是一个梦想,它可以免费用于多达 50 个网站!

    【讨论】:

    • 非常整洁的网站,我必须在这个和 pingdom 之间做出选择。会让你知道我最终会得到什么。
    • 我已经选择了 uptime 机器人 - 这似乎是一笔不错的交易,因为它对 50 个站点是免费的 :-)
    【解决方案2】:

    您应该将此实现为通过计划任务运行的 Windows 服务或控制台应用程序。网站确实不是合适的应用程序类型。

    【讨论】:

    • 虽然这是真的,但我没有可以在其上安装服务/控制台应用程序的 24/7 运行的服务器。换句话说,我别无选择,只能使用网络应用程序。 :-(
    【解决方案3】:

    我同意 tvanfosson 但如果您现在需要它,您仍然可以将应用程序池配置为不回收。

    http://technet.microsoft.com/en-us/library/cc753179(WS.10).aspx

    【讨论】:

    • 不错的细节,但恐怕我还有重启等问题要担心。知道如何配置它仍然很棒。
    • 恐怕你除了服务和调度控制台应用程序之外别无选择......
    【解决方案4】:

    最好将其构建为 Windows 服务或计划的控制台应用程序。如果您想将其保留为 Web 应用程序,则可以让第 3 方向您的应用程序发送 ping 以保持其运行。在我当前的客户中,这是使用 http://www.pingdom.com/ 完成的,但还有其他替代方法。

    【讨论】:

    • 使用 pingdom 的好处 - 我们实际上在工作中使用该工具,我只是完全忘记了它。
    • 在大多数情况下,就像在您当前的情况下一样,这种方法在近期是最容易和最便宜的。我还是赞成把它变成windows服务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    相关资源
    最近更新 更多