Azure startup task Appcmd to config my site

2.8k views Asked by At

I have a azure site running, and I want to solve the notorious application pool restart warm up issue. It seems that MS has release for Application Initialization IIS.

So I have to do the following 1. Install Application Initialization 2. Make some configuration changes mentioned in here http://learn.iis.net/page.aspx/1089/iis-80-application-initialization/

a) In Application pool section of %WINDIR%\system32\inetsrv\config\applicationhost.config file

b) In site section of %WINDIR%\system32\inetsrv\config\applicationhost.config file ... ....

My question is, how to write the Appcmd script to solve 2. b) to add preloadEnabled="true" to the right place, because i need to do 1) find the root site, given that I dont know the sitename, nor the site id. 2) add the preloadEnabled="true" property to the root site I found in step 2).

5

There are 5 answers

1
David Makogon On

As far as avoiding restart, add this command to your startup script:

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

Not sure about your preload question.

1
Alex Laverty On

I know this is an old question but to hopefully answer this part :

how to write the Appcmd script to solve 2. b) to add preloadEnabled="true" to the right place, because i need to do

Use the appcmd :

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

Regards Alex

0
Mathew Thompson On

Coupled with David's answer to reset the idle timeout, you can also prevent the app pools from recycling at all by using the following as a startup task:

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

You also need to set two other things: startMode and preloadEnabled.

For startMode, you can add this to the startup task you created for the code above:

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

For preloadEnabled, you can do what Alex said and do this in your startup task:

appcmd set app "websitename/vdirname" /preloadEnabled:true
1
ionwarp On

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.

0
Ming Xu - MSFT On

There's a sample on http://blogs.msdn.com/b/tom/archive/2011/02/18/installing-and-using-an-httpmodule-in-windows-azure.aspx. Essentially, you need to set executionContext to elevated, so your web role's entry point (but not ASP.NET application) will run under administrator previlige. Inside the entry point, you can use IIS administration API to configure the warm up module.