使用NGEN更新RemoteAPP应用程序的正确方法

时间:2012-11-21 15:54:35

标签: .net deployment windows-server-2008-r2 ngen remoteapp

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

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

我们目前的工作方式如下:

  1. 重命名要在RemoteAPP服务器上更改的文件,用户连接到该文件(操作系统不允许在加载文件时覆盖文件),
  2. 编写新文件而不是旧文件,
  3. NGEN安装新程序集(不先卸载旧程序集!),
  4. 通知用户(通过应用程序本身)应用版本已更改且需要重新启动,
  5. 逐渐允许用户按照自己的节奏重启应用程序(同时重启应用会导致磁盘和CPU负载增加,从而影响服务器性能)。 对集群中的所有主机都是如此。
  6. 在此之后,服务器偶尔会出现Blue-Screen-Crash,其中包含Microsoft-Windows-Kernel-Power EventID 41严重错误 - 我非常责怪我们的更新实践对此负责。

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

    谢谢。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

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

    startApp.exe启动1.0.26\theApp.exe