【问题标题】:editing web.config - a cause of downtime?编辑 web.config - 停机的原因?
【发布时间】:2010-12-30 13:11:27
【问题描述】:

在我正在使用的网站上,我们有两类他们可以要求的更改。一方面,他们有我必须重建和重新部署的东西。他们将这些视为“停机时间”更改,因为我们会显示一个漂亮的小闪屏,并且在我们恢复时会彻底测试网站。

另一方面,他们要求我们进行一些文本更改、打开和关闭功能等,我们已将其与 web.config 隔离。我们提供在部署窗口内部或外部执行这些操作 - 我们只需编辑文件,检查更改是否正确,然后继续工作。

但是客户端的一位聪明人指出,编辑 web.config 会回收应用程序池,这就是停机时间。我从来没有注意到,但我想这是对的 - 当应用程序池不可用时,应用程序处于“关闭”状态。

但是要持续多久?我并不是要您对停机时间间隔的客户舒适程度进行分类,但这是一个普遍的观点吗?还是我们不应该担心 web.config 编辑会伴随一两秒的应用程序停机时间?

【问题讨论】:

  • 在它出现之前:这可能与另一个 web.config 编辑问题有关 -stackoverflow.com/questions/178342/… - 但我没有使用 SharePoint,我不关心会话状态(我有饼干)。

标签: asp.net iis web-config downtime


【解决方案1】:

到目前为止所说的都是正确的。

但是有一种方法可以避免这种停机时间,只要您提取的值没有被缓存。

您可以将 .config 文件的一部分移植到另一个文件,该文件不会回收应用程序池。

在 web.config 文件中看起来像这样:

<appSettings file="moresettings.config"></appSettings>

那么您的外部文件将如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<appSettings>   
<add key="SOMEKEY" value="MYVALUE"/>
</appSettings>

【讨论】:

    【解决方案2】:

    IIS 通常会自行回收应用程序池,如果这些回收不会引起您的关注,那么这一次也不应该。

    用户不应该收到任何类型的“服务不可用”错误,afaik。

    【讨论】:

    • 这个。无论如何,应用程序池都会定期回收,具体取决于您的设置(时间、内存消耗等)。一个简单的 web.config 更改不应该对您的应用产生不利影响,除非您正在做一些愚蠢的事情,例如使用进程内会话状态(如果您这样做了,那么您应该努力解决问题)。
    【解决方案3】:

    如果您完全担心停机时间,并且这种情况经常发生,我会考虑将这些设置移至数据库。

    也就是说,在您的情况下,停机时间将是最短的。当您保存 web.config 文件时,应用程序池会被回收,我们说的是毫秒。

    【讨论】:

      【解决方案4】:

      如前所述,IIS 确实在回收应用程序池。不过,这并不像执行完整的 iisreset 那样糟糕——用户不应该得到“服务不可用”。错误,因为 Web 服务器仍然在线并正在服务请求 - 它只需要等待 AppPool 重新启动,这意味着此时访问的用户的响应时间非常高。如果您有一个公共网站并拒绝访问者,这当然可能是个问题。

      AppPool 回收的其他副作用与 iisreset 相同:如果我没记错的话,它会刷新 InProc Session Cache,并执行 Application_Start 事件。

      因此,即使它相对无害,我仍会将其视为停机。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-21
        • 2012-10-10
        • 2011-01-29
        • 2023-03-29
        • 2011-10-21
        • 2011-10-07
        • 1970-01-01
        相关资源
        最近更新 更多