How to implement custom application pools on the SMP to improve web-console performance

book

Article ID: 181245

calendar_today

Updated On:

Products

Management Platform (Formerly known as Notification Server)

Issue/Introduction

 

Resolution

NOTE: The information provided here is given as suggestion for environments prior to ITMS 7.1 but it has not passed any type of test with our QA group nor has an approval as a supported procedure. See as well HOWTO83873 "7.1 Application Pool Best Practices"

Symantec Solutions based on the Symantec Management Platform can be really demanding on memory, which can have a very adverse impact on production server (systems with an few hundred agent workload) because the Application Pool default configuration causes memory attrition.

The memory attrition is most noticeable in the Web Console, but can also be seen on the server itself with a CPU usage reaching 75 to 100% by the w3wp.exe and a process memory consumption above the 1.1 GiB mark.

This problem is due to a limitation within the .Net framework itself, and varies depending on the count of objects managed by the framework (between 1.1 and 1.3GiB of memory). Once .Net reaches the memory ceiling it spends a lot of time trying to find memory via garbage collection or other internal processing which has a direct impact on the handling of http requests and crafting the http responses.

To avoid this type of problems and optimize the web console experience Symantec recommends implementing additional application pools to partition the Altiris web-applications that are consuming a significant amount of memory or that can be impacted by sharing the default application pool. This way we increase the memory available to the Symantec web-application from 1 x 1.1 GiB to 5 or 6 x 1.1 GiB (which is never used in full with the new configuration).

We will show here the two ways to configuration the application pool: automatically or manually.

Important note:

Some of the Altiris web-applications need to be in the same pool as the "/Altiris" or "/Altiris/NS" web-apps. So if you want to extend the script below to include additional pools make sure you test the candidate application first, and keep the changes in mind should anyone report some problems with the specific application or other console issues. Also note that rolling back the changes is very easy using a single script.

Here is a table with the application pools recommended:

Application pool name Applications in the pool Importance
Altiris-NS-Agent /Altiris/NS/Agent Critical
TaskManagement

/Altiris/TaskManagement

/Altiris/ClientTaskServer

Critical
ActivityCenter /Altiris/ActivityCenter Important
PatchManagement

/Altiris/PatchManagement

/Altiris/PatchManagementCore

Altiris/PatchManagementMac

Important
SoftwarePortal /Altiris/SoftwarePortal Optional
ITAnalytics

/Altiris/ITAnalytics

/Altiris/ITAnalyticsCSMP

/Altiris/ITAnalyticsSEP

Optional

 

Scripted configuration of the Application pools:

Here is a script that will implement the application pools as described above (text file attached with correct new line formatting).

@echo off 
 set appcmd=%comspec%\..\inetsrv\appcmd %appcmd% 
 add apppool -name:Atiris-NS-Agent %appcmd% 
 set apppool Altiris-NS-Agent -managedPipelineMode:Classic %appcmd% 
 set app "Default Web Site/Altiris/NS/Agent" -applicationPool:Atiris-NS-Agent  %appcmd% 
 add apppool -name:TaskManagement %appcmd% 
 set apppool TaskManagement -managedPipelineMode:Classic %appcmd% 
 set app "Default Web Site/Altiris/TaskManagement" -applicationPool:TaskManagement %appcmd% 
 set app "Default Web Site/Altiris/ClientTaskServer" -applicationPool:TaskManagement  %appcmd% 
 add apppool -name:ActivityCenter %appcmd% 
 set apppool ActivityCenter -managedPipelineMode:Classic %appcmd% 
 set app "Default Web Site/Altiris/ActivityCenter" -applicationPool:ActivityCenter  %appcmd% 
 add apppool -name:PatchManagement %appcmd% 
 set apppool PatchManagement -managedPipelineMode:Classic %appcmd% 
 set app "Default Web Site/Altiris/PatchManagement" -applicationPool:PatchManagement %appcmd% 
 set app "Default Web Site/Altiris/PatchManagementCore" -applicationPool:PatchManagement %appcmd% 
 set app "Default Web Site/Altiris/PatchManagementMac" -applicationPool:PatchManagement  %appcmd% 
 add apppool -name:SoftwarePortal %appcmd% 
 set apppool SoftwarePortal -managedPipelineMode:Classic %appcmd% 
 set app "Default Web Site/Altiris/SoftwarePortal" -applicationPool:SoftwarePortal  %appcmd% 
 add apppool -name:ITAnalytics %appcmd% 
 set apppool ITAnalytics -managedPipelineMode:Classic %appcmd% 
 set app "Default Web Site/Altiris/ITAnalytics" -applicationPool:ITAnalytics %appcmd% 
 set app "Default Web Site/Altiris/ITAnalyticsCSMP" -applicationPool:ITAnalytics %appcmd% 
 set app "Default Web Site/Altiris/ITAnalyticsSEP" -applicationPool:ITAnalytics 

 Manual configuration of the Application Pools:

Although it is possible to configure all the pools automatically it doesn't hurt knowing how to do it manually, so here's a step-by-step description of the process:

  • Open the IIS Manager (Inetmgr) click on the server you want to manage and select the "Application Pools" section:

  • Right click anywhere on the view pane (right hand side) and select "Add Application Pool"

  • Add the new application pool name (Altiris-NS-Agent in our example)

  • Select the Framework version 2.0

  • Select "Classic" in the "Managed pipeline mode" section

  • Tick "Start application pool immediately"

  • Click "OK" to create the new pool

  • On the left hand side tree select the web-application folder that you want to isolate

  • Right click "Manage Application > Advanced Settings"

  • In the window "Advanced Settings > General > Application Pool" click on the selector button "..."

  • In the Application pool drop-down select the created pool ("Altiris-NS-Agent" here)

  • Click "OK"

  • Press F5 to refresh the window. You will see the new application pool with 1 application in it (as we have just configured it)

  • Repeat the operation in order to create as many pools as needed or desired...

 

 

 

 

Attachments

config-app-pools.txt get_app