18

我们在 RDS 服务器上有一个 Windows2008R2 RemoteAPP .NET 4.5 应用程序 NGEN-ed,大约。3 主机 NLB 群集的 300 个并发用户。

该应用程序正在积极开发中,需要经常更新(即替换为新的)RemoteAPP 部署的程序集。

我们目前的做法如下:

  1. 重命名要在 RemoteAPP 服务器上更改的文件,用户连接到它(如果文件被加载,操作系统将不允许文件被覆盖),
  2. 写新文件而不是旧文件,
  3. NGEN 安装新程序集(无需先卸载旧程序集!),
  4. 通知用户(通过应用程序本身)应用程序版本已更改,需要重新启动,
  5. 逐渐允许用户按照自己的节奏重新启动应用程序(同时重新启动应用程序会导致磁盘和 CPU 负载增加,从而损害服务器性能)。对于集群中的所有主机也是如此。

在此之后,服务器偶尔会出现蓝屏崩溃并出现 Microsoft-Windows-Kernel-Power EventID 41 严重错误 - 我强烈谴责我们的更新实践对此负责。

因此,问题是:在不必终止访问旧程序集的进程的情况下更新 RemoteAPP 应用程序和 NGEN 新程序集的推荐方法是什么(即允许用户在他们喜欢时继续并重新启动)。

谢谢你。

4

2 回答 2

1

我建议使用新的“用于 IIS 7.5 的应用程序初始化模块”来加速您的 Web 应用程序,并且“应用程序初始化”内置在 IIS 8 中,而不是 ngen。

微软网站声称:IIS 7.5 的 IIS 应用程序初始化使网站管理员能够通过在第一个请求到达之前加载 Web 应用程序来提高其网站的响应能力。

参考: http ://weblog.west-wind.com/posts/2013/Oct/02/Use-IIS-Application-Initialization-for-keeping-ASPNET-Apps-alive

于 2014-04-24T22:34:50.930 回答
0

您可以使用通过 RemoteApp 发布的入门应用程序。启动器将依次启动应用程序的最新版本。

例如:有一个注册表项,它是您的应用程序最新版本的路径

  1. 添加一个新文件夹C:\Program Files\myApp\1.0.26\
  2. ngen新组件
  3. 更新注册表项以指向新文件夹
  4. Launcher 在运行时启动新版本的应用程序
  5. (可选)在不再使用旧版本时将其删除

RemoteApp 指向C:\Program Files\myApp\startApp.exe

startApp.exe开始1.0.26\theApp.exe

于 2014-01-28T00:15:53.677 回答