Background
Internet information server (IIS) application pools support the ability to specify the number of worker processes that each application pool can use. Whilst this does allow for multiple simultaneous processes to execute, it can lead to problems as asp.net does not automatically syncronise values across the worker processes i.e. each has it's own unique httpcontext including elements such as session and cache. As such DotNetNuke does not support webgarden's (more than 1 worker process per application pool).
Note: there are a few 3rd party products that handle the syncronisation of worker threads but DotNetNuke has not been tested in this configuration
Ensuring a site is not using webgardens
To tell if a web garden is configured for a particular DNN site, perform the following steps.
- Open Internet Information Services Manager
- Expand the server node, to display the application pools on the server.
- Click on the Application Pools node to display the pools (right pane).
- Find the appropriate pool, right click and select “Advanced Settings”
- In the dialog box, check Process Model | Maximum Worker Processes.
- If the number is more than 1, the site is configured as a web garden.
Problem behaviour
The most common way to identify that a site is using webgardens is to see cache not correctly working i.e a user add's something in a DotNetNuke site and initially it does not appear (this may even cause a 404 issue). After recycling the site the element appears e.g.
- When a new portal is created, the redirect after creation is the root portal instead of the new site. Upon cache cleanse the site is available.
- When a new page is created on any portal, it does not show up in the navigation until a Host-level admin clears the cache manually.
- When a page is moved, it does not show in the correct navigation area until a Host-level admin clears the cache manually.
- When changes are made to module content or titles, it does not reflect.
- While the URL of the new page shows in the browser, while DNN is actually loading a page it was last on.
- If you delete the page you see, you’re actually deleting the page you were last on (very bad!)