1

我有一个 azure 站点正在运行,我想解决臭名昭著的应用程序池重启预热问题。似乎 MS 已经发布了应用程序初始化 IIS。

所以我必须执行以下操作 1. 安装应用程序初始化 2. 进行此处提到的一些配置更改http://learn.iis.net/page.aspx/1089/iis-80-application-initialization/

a) 在 %WINDIR%\system32\inetsrv\config\applicationhost.config 文件的应用程序池部分

b) 在 %WINDIR%\system32\inetsrv\config\applicationhost.config 文件的站点部分 ... ....

我的问题是,如何编写 Appcmd 脚本来解决 2. b)将preloadEnabled="true"添加到正确的位置,因为我需要做 1)找到根站点,因为我不知道站点名称,也不知道站点 ID。2) 将preloadEnabled="true" 属性添加到我在步骤 2) 中找到的根站点。

4

5 回答 5

1

再加上大卫重置空闲超时的答案,您还可以通过使用以下作为启动任务来完全防止应用程序池回收:

%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.recycling.periodicRestart.time:00:00:00

您还需要设置另外两件事:startModepreloadEnabled.

对于startMode,您可以将其添加到您为上述代码创建的启动任务中:

%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.startMode:AlwaysRunning

对于preloadEnabled,您可以按照 Alex 所说的去做,并在您的启动任务中执行此操作:

appcmd set app "websitename/vdirname" /preloadEnabled:true
于 2013-04-18T14:06:59.820 回答
0

If you are looking to configure the site/application pool using an AppCmd startup task, check out my recent post about this:

http://mvolo.com/configure-iis-websites-windows-azure-startup-tasks-appcmd/

This covers how to find the site/application pool to edit, and also how to run the task AFTER the site/apppool configuration is created and not before.

We are actually enabling application warmup via serviceAutoStartProviders using this approach, I will blog about the configuration tool we use / issues we solved in a later post.

If you need help with that now, send me an email.

于 2012-07-16T17:41:34.873 回答
0

我知道这是一个老问题,但希望能回答这部分:

如何编写 Appcmd 脚本来解决 2. b) 将 preloadEnabled="true" 添加到正确的位置,因为我需要这样做

使用appcmd

appcmd set app "websitename/vdirname" /preloadEnabled:true

问候亚历克斯

于 2013-03-03T22:37:57.443 回答
0

就避免重新启动而言,将此命令添加到您的启动脚本中:

%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00

不确定您的预加载问题。

于 2012-06-06T21:46:53.190 回答
0

http://blogs.msdn.com/b/tom/archive/2011/02/18/installing-and-using-an-httpmodule-in-windows-azure.aspx上有一个示例。本质上,您需要将 executionContext 设置为提升,以便您的 Web 角色的入口点(但不是 ASP.NET 应用程序)将在管理员权限下运行。在入口点内,您可以使用 IIS 管理 API 来配置预热模块。

于 2012-06-07T02:55:04.663 回答