Search code examples
azureappdomainazure-web-app-service

Azure Websites AppDomain many restarts


I've a group of asp.net 4.0 Websites runing in Azure Websites

  • Compute mode: Standard
  • Location: North Europe
  • Capacity autoscale: Off
  • Instance size: Large
  • Instance Count: 1

The response time is very slow, the trafic is normal, but my log show many AppDomain shutdowns (more than 3 in one minute). My websites load data in cache during de Application_Start to give a rapid response to all subsequents requests but if the Appdomains restarts every time is impossible to give acceptable response times.

The ShutdownReason values are many:

  • ConfigurationChange
  • HostingEnvironment
  • CodeDirChangeOrDirectoryRename
  • BinDirChangeOrDirectoryRename
  • BrowsersDirChangeOrDirectoryRename

This have no sense because I've not changed any file in these folders.

I've tested one of these sites in a free mode running very fast and without any unexpected AppDomain restart.

Thanks.

Update:

I've included this code in the Application_Start, no file changes have been detected and the AppDomain is restarting again, and again...

var monitorPath = HostingEnvironment.MapPath("~/");
Application.Add("watcher", new FileSystemWatcher(monitorPath));
fsw = (FileSystemWatcher) Application["watcher"];
fsw.EnableRaisingEvents = true;
fsw.IncludeSubdirectories = true;
fsw.Changed += fsw_Changed;
fsw.Created += fsw_Created;
fsw.Deleted += fsw_Deleted;
fsw.Renamed += fsw_Renamed;

Update 07/15/2013:

using the code from the ScottGu article http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx

I have logged this:

_shutDownMessage=Directory rename change notification for 'C:\DWASFiles\Sites\my-sitename\VirtualDirectory0\site\wwwroot'.
File Change Notification Error in wwwroot
HostingEnvironment initiated shutdown
Change Notification for critical directories.
File Change Notification Error in App_GlobalResources
Change Notification for critical directories.
File Change Notification Error in bin
Change Notification for critical directories.
File Change Notification Error in App_Browsers
Change Notification for critical directories.
File Change Notification Error in App_Code
Change Notification for critical directories.
File Change Notification Error in App_WebReferences
CONFIG change
CONFIG change
CONFIG change
CONFIG change
CONFIG change
CONFIG change
CONFIG change
CONFIG change
CONFIG change
CONFIG change
File Change Notification Error in C:\DWASFiles\Sites\my-sitename\VirtualDirectory0\site\wwwroot
CONFIG change
File Change Notification Error in 
HostingEnvironment caused shutdown
File Change Notification Error in 
Change Notification for critical directories.
File Change Notification Error in App_LocalResources
Change Notification for critical directories.
File Change Notification Error in App_LocalResources
CONFIG change

_shutDownStack=   at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   at System.Environment.get_StackTrace()
   at System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal()
   at System.Web.Hosting.HostingEnvironment.InitiateShutdownWithoutDemand()
   at System.Web.HttpRuntime.ShutdownAppDomain(String stackTrace)
   at System.Web.HttpRuntime.OnCriticalDirectoryChange(Object sender, FileChangeEvent e)
   at System.Web.FileChangesMonitor.OnSubdirChange(Object sender, FileChangeEvent e)
   at System.Web.DirectoryMonitor.FireNotifications()
   at System.Web.Util.WorkItem.CallCallbackWithAssert(WorkItemCallback callback)
   at System.Web.Util.WorkItem.OnQueueUserWorkItemCompletion(Object state)
   at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

Update 07/19/2013:

The metric Data-In is very high and has no relation with the requests metric, but when I configure the setting fcnMode=”Disabled” the data-In immediately down to normal values accord with the traffic.


Solution

  • Using the new setting fcnMode in asp.net 4.5 (seems to work in 4.0) the AppDomain stops restarting

      <httpRuntime fcnMode="Disabled" />
    

    But, the question now is why the FileChangesMonitor in azure Websites (at least in the websites in my subscription) give this _shutDownMessage:

    File Change Notification Error in wwwroot
    HostingEnvironment initiated shutdown
    Change Notification for critical directories.
    File Change Notification Error in App_GlobalResources
    Change Notification for critical directories.
    File Change Notification Error in bin
    Change Notification for critical directories.
    File Change Notification Error in App_Browsers
    ...
    

    Update:

    The cause was a bug in SMB that was affecting only the location North Europe.