Products

Solutions

Resources

Partners

Community

About

New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

Welcome to the DNN Community Forums, your preferred source of online community support for all things related to DNN.
In order to participate you must be a registered DNNizen

HomeHomeUsing DNN Platf...Using DNN Platf...Administration ...Administration ...File change notification issues - Web Farm over UNC shareFile change notification issues - Web Farm over UNC share
Previous
 
Next
New Post
7/16/2009 7:28 AM
 

Hi,

we are trying to set up a DNN web farm over a UNC share (recommended scenario) and we have been experiencing unexpected application pool recycling on file change notifications.

We have 3 setups with similar symptoms:

  • Production:
    • Load Balancer
    • Web front:  2 machines with windows server 2008, with a dedicated application pool and web site, clone local users for file access
    • File Server: NAS: NetApp FAS2050
    • Db Server: Windows server 2008, Sql Server 2008
  • PreProd: Same config with virtual machines for the 2K8 servers
     
  • Dev:
    • Vista x64
      • IIS 7 load balancer module
      • Sql Server 2008
      • File server over a local folder shared to a dedicated user
    • VM with Windows Server 2008
      • Web servers mapped on the share with clone users

We had multiple problems from the start and applied corresponding workarounds:

  • Permission issues (Caspol -url ..., aspnet_regiis -ga ...)
  • FCN limits: registry edits (MaxCmds, MaxMpxCt,  MaxWorkItems, FCNMode)
  • File locks registry edit (OplocksDisabled)

 We're still stuck on a problem with file change notifications triggering an app restart.

The FileBasedCachingProvider could cause such recycling so we switched to BroadcastPolling (which we had to fix btw but that's another issue).

However, there are many other file dependencies (DNN wise or simply ASP.Net wise), and corresponding failure conditions, which we cannot ignore (update of an ascx, of a resx, of an App_Code file etc.)

We made a change to the Application_End logging logic to collect more information (by Reflection on _shutDownMessage and _shutDownStack in the runtime), here are some pieces of info that we get depending on the conditions (all of which don't normally trigger any recycling I should add):

  • Overwhelming Change Notification in ...
  • App_Code dir change or directory rename HostingEnvironment initiated shutdown ...
  • Change Notification for critical directories. App_LocalResources dir change or directory rename HostingEnvironment initiated shutdown ...

Has anyone had to deal with such issues?

Any experience from web farmers is more than welcome.


Jesse
CTO - Aricie
 
New Post
10/16/2009 10:17 AM
 

Hi,

have you had any luck solving this, we are experiencing the same thing.

Thanks

 
New Post
10/16/2009 10:35 AM
 

 

A quick question as we are experiencing the same issues, we aren’t sure whether it’s the FCN, how can we diagnose that this is the actually issue with our set up (its almost the same as yours) also which version of DNN are you using?
Thanks
 
New Post
10/21/2009 12:12 PM
 

Hi,

We did solve our issues with a few other OS tweaks:

  • We disabled SMB2 support on the web servers (in command prompt)
  • We increased IRPStackSize parameter

If you're still stuck, you should try those (Google will probably help you finding out more information)

We had the pb with all dnn instances on the server (multiple versions, dnn 4.9.X and 5.1.X)

We also upgraded to dnn 5 pro since then, and switched to the new web based caching provider.

As for diagnosing the pb, here are the changes we made to the end of global.asax.vb to get more information on app pool recycling conditions (By replacing  Initialize.LogEnd with an updated version):

Cheers


  Private Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)

            ' stop scheduled jobs
            Initialize.StopScheduler()

            ' log APPLICATION_END event
            'Initialize.LogEnd()

            LogEndBis()
           

        End Sub


        Public Shared Sub LogEndBis()
            Try

                Dim shutdownReason As System.Web.ApplicationShutdownReason = System.Web.Hosting.HostingEnvironment.ShutdownReason
                Dim shutdownDetail As String = ""
                Select Case shutdownReason
                    Case ApplicationShutdownReason.BinDirChangeOrDirectoryRename
                        shutdownDetail = "The AppDomain shut down because of a change to the Bin folder or files contained in it."
                    Case ApplicationShutdownReason.BrowsersDirChangeOrDirectoryRename
                        shutdownDetail = "The AppDomain shut down because of a change to the App_Browsers folder or files contained in it."
                    Case ApplicationShutdownReason.ChangeInGlobalAsax
                        shutdownDetail = "The AppDomain shut down because of a change to Global.asax."
                    Case ApplicationShutdownReason.ChangeInSecurityPolicyFile
                        shutdownDetail = "The AppDomain shut down because of a change in the code access security policy file."
                    Case ApplicationShutdownReason.CodeDirChangeOrDirectoryRename
                        shutdownDetail = "The AppDomain shut down because of a change to the App_Code folder or files contained in it."
                    Case ApplicationShutdownReason.ConfigurationChange
                        shutdownDetail = "The AppDomain shut down because of a change to the application level configuration."
                    Case ApplicationShutdownReason.HostingEnvironment
                        shutdownDetail = "The AppDomain shut down because of the hosting environment."
                    Case ApplicationShutdownReason.HttpRuntimeClose
                        shutdownDetail = "The AppDomain shut down because of a call to Close."
                    Case ApplicationShutdownReason.IdleTimeout
                        shutdownDetail = "The AppDomain shut down because of the maximum allowed idle time limit."
                    Case ApplicationShutdownReason.InitializationError
                        shutdownDetail = "The AppDomain shut down because of an AppDomain initialization error."
                    Case ApplicationShutdownReason.MaxRecompilationsReached
                        shutdownDetail = "The AppDomain shut down because of the maximum number of dynamic recompiles of resources limit."
                    Case ApplicationShutdownReason.PhysicalApplicationPathChanged
                        shutdownDetail = "The AppDomain shut down because of a change to the physical path for the application."
                    Case ApplicationShutdownReason.ResourcesDirChangeOrDirectoryRename
                        shutdownDetail = "The AppDomain shut down because of a change to the App_GlobalResources folder or files contained in it."
                    Case ApplicationShutdownReason.UnloadAppDomainCalled
                        shutdownDetail = "The AppDomain shut down because of a call to UnloadAppDomain."
                    Case Else
                        shutdownDetail = "No shutdown reason provided."
                End Select


                Dim theRuntimeField As System.Reflection.FieldInfo = GetType(System.Web.HttpRuntime).GetField("_theRuntime", System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Static)
                Dim theRuntime As Object = theRuntimeField.GetValue(Nothing)
                Dim shutDownMessageField As System.Reflection.FieldInfo = GetType(System.Web.HttpRuntime).GetField("_shutDownMessage", System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Instance)
                Dim shutDownMessage As String = DirectCast(shutDownMessageField.GetValue(theRuntime), String)

                Dim objEv As New EventLogController
                Dim objEventLogInfo As New LogInfo
                objEventLogInfo.BypassBuffering = True
                objEventLogInfo.LogTypeKey = Services.Log.EventLog.EventLogController.EventLogType.APPLICATION_SHUTTING_DOWN.ToString
                objEventLogInfo.AddProperty("Shutdown Details", shutdownDetail)
                objEventLogInfo.AddProperty("Shutdown Message", shutDownMessage)

                objEv.AddLog(objEventLogInfo)
            Catch exc As Exception
                LogException(exc)
            End Try

            ' purge log buffer
            LoggingProvider.Instance.PurgeLogBuffer()
        End Sub


Jesse
CTO - Aricie
 
New Post
10/22/2009 6:58 AM
 

 Thanks for the update, i found a very useful post to help diagnose theFCN issue http://blogs.msdn.com/tess/archive/2006/08/02/686373.aspx 

 

We will look at the other information to determine what we need to do at the moment.

 

Thanks

 
Previous
 
Next
HomeHomeUsing DNN Platf...Using DNN Platf...Administration ...Administration ...File change notification issues - Web Farm over UNC shareFile change notification issues - Web Farm over UNC share


These Forums are dedicated to discussion of DNN Platform and Evoq Solutions.

For the benefit of the community and to protect the integrity of the ecosystem, please observe the following posting guidelines:

  1. No Advertising. This includes promotion of commercial and non-commercial products or services which are not directly related to DNN.
  2. No vendor trolling / poaching. If someone posts about a vendor issue, allow the vendor or other customers to respond. Any post that looks like trolling / poaching will be removed.
  3. Discussion or promotion of DNN Platform product releases under a different brand name are strictly prohibited.
  4. No Flaming or Trolling.
  5. No Profanity, Racism, or Prejudice.
  6. Site Moderators have the final word on approving / removing a thread or post or comment.
  7. English language posting only, please.
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out