2009-04-14 134 views
3

背景信息:文件复制是瘸子服务器特定的web.config从共享驱动器托管

目前,我们有一个庞大的,高流量的ASP.NET Web应用程序的负载平衡跨越8个不同的IIS服务器。由于网站的性质,对.aspx文件和.ascx控件的轻微更改经常会在整个一天发生,并且在经过测试并发布到现场后,会按计划每隔xcopy部署将其复制到每个公共Web服务器10分钟。

当然这是非常低效的,因为每个服务器都必须有整个站点的冗余副本,并且我们希望消除10分钟的发布滞后。

可能的改进:从共享存储主机

我们现在必须使用集中存储与iSCSI接口集中托管整个网站,每个服务器认为远程存储是一个本地驱动器的选项。发布会是即时和全系统的。

注意:将驱动器托管在UNC共享上是不可能的,因为站点结构中有许多不同的目录,每个目录都需要用于ASP.NET的FileSystemWatcher来监视更改,SMB最大命令数是迅速到达。是的,我们知道MaxCmds和MaxMpxCt注册表设置。

问题:Web.config中的变化引发大规模的重新编译

我们预见的问题是文件系统结构中的某些变化可能会造成几乎所有的编译的.aspx或.ASCX不得不重新编译,从而导致排队的请求和服务器关闭的感觉。大多数资源并未在系统范围内使用,因此重新编译这些资源不会导致资源浪费。网站上所有页面使用的全局主页面可能导致这种情况,但这可以通过代码轻松管理。

主要的罪魁祸首是web.config文件。对web.config文件的更改会导致整个Web应用程序回收并重新编译。所以,我们目前不复制web.config更改。任何web.config更改都需要将Web服务器从负载平衡器中取出,应用(和测试)更改,然后在将服务器放回负载平衡器之前使用垃圾请求升温服务器。

但是,如果web.config文件与其他Web应用程序的目录结构一样位于集中式存储中,则只有该文件的一个副本,并且单个服务器不能再被修补和预热。

问题

有没有办法得到一个ASP.NET Web应用程序把它的行军命令从比一个名为Web.config文件以外的来源?

理想情况下,将每台服务器一个文件,例如:

  • 的Default.aspx
  • Global.asax的
  • 网络ServerA.config
  • 网络服务器B。配置
  • ...
  • 网络ServerN.config

在哪里名字的 “web.config” 无论如何定义?是否有可以基于每个服务器设置的注册表设置?是否有可以在machine.config或全局web.config中指定要使用的文件的条目?

事情超出范围

只是让我很清楚,我不问如何有调试,测试不同的AppSettings,和生活。还有其他一些话题涵盖了这一点,并且我的所有web.configs在大多数时间都是相同的,唯一需要它们的地方是更新时间。

我们没有使用任何appSettings信息的web.config;这是非常重要的东西,比如程序集引用,httpHandler定义以及其他不能基于数据库的system.web设置。

更新

我试图寻找在注册表中的Web.config,并没有发现什么不同的是指出,我最近编辑的web.config文件中,这是我显然做了很多的应用。没有帮助。

+0

你使用的是II6还是IIS7? – 2009-05-14 14:26:05

+0

此刻IIS6,但升级到IIS7是在远程计划。我认为需要IIS7的解决方案就好了。 – 2009-05-15 13:50:49

回答

0
  1. 只是好奇,你使用的是什么文件系统? NTFS不是共享存储文件系统。换句话说,一次不能有多个节点写入文件系统。

  2. 我会建议IIS下的网站下的虚拟目录。这可能需要对代码布局进行一些重构,但不应太重要。因此,您需要使用特定于该机器的web.config的根目录,然后将vdir映射到您设置的任何共享文件系统资源。

1

我的第一个问题是你在web.config中保留什么&你可以将它移动到数据库吗?我们将每个配置设置保存在数据库的一个表中,并使用machine.config来存储数据库连接信息。

不知道有多少重写是你的,但它会避免你的问题。

另一种选择是将您的配置项目放置在外部文件中,并从web.config中引用它。对该文件所做的更改将不会重新读取,直到回收aspnet wp,但允许您更改设置,然后通过IISRESET循环每个服务器。

<configuration> 
    <appSettings file="OtherFile.config"> 
... 
+0

这与appSettings无关。这是用于必须在web.config文件中的东西,比如程序集引用和httpHandler定义。 – 2009-04-14 19:11:57

相关问题