The self-service portal is built as an ASP.Net web site that runs as an application in Internet Information Services (IIS). This web site uses what is called an “app pool” (short for application pool) to run. You can have many applications running in a single app pool which runs as a particular identity and has various other knobs, levers, and switches that allow you to control how the applications in that app pool behave.
IIS has a feature called Just In Time (JIT) compiling that will compile a application the first time the app pool it is located in starts up. This makes the application run faster as a compiled application. The problem is that this JIT compile process can take a few seconds depending on the size of the site. In the case of the SCSM self-service portal it can take about 5-20 seconds. After that it is very fast because it is using the compiled application. So – the first time that you access the self-service portal after the app pool has been started or recycled it takes a long time to wait for the compile to happen.
Now the FAQ – Why is the self-service portal so slow?
The reason is that there is a setting in IIS which says that after a configurable period of inactivity the app pool will be recycled. The idea behind this setting is to free up resources that may then be used by other app pools on the same IIS server if a given app is not being used. That’s great for heavily used IIS servers with hundreds or even thousands of web sites. That is not normally the case for SCSM so we actually want to set this setting to never recycle the app pool due to inactivity. That way, even if the portal isn’t being used for awhile (for example overnight while everybody is sleeping) that the app pool won’t time out and force a JIT compile the first time somebody tries to use it in the morning.
So – how do we change this?
- Log into the server where the SCSM self-service portal web site is installed
- Start IIS (Start –> Administrative Tools –>Internet Information Services (IIS) Manager)
- Expand the server and select Application Pools in the navigation pane
- Right click on the SM_AppPool (unless you have renamed it to something else) and choose Advanced Settings…
- Change the ‘Idle Time-out (minutes) setting from 5 to 0.
- Change the Regular Time Interval (minutes) to 0 if necessary.
- Click OK
- Right click on the SM_AppPool again and choose Recycle
Now view the self-service portal again in your browser. It will take a few seconds to load now because it is doing a JIT compile following the SM_AppPool recycle we just did. From then on it will not do a JIT compile again until the app pool is recycled again (app pool recycle, IIS reset, or server reboot). That should eliminate the main cause of why the portal seems so slow.
Here are some other things that you can do to improve performance. Make sure you know what you are doing here by doing some research on these topics first.
- Make your app pool a “web garden” by changing the Maximum Worker Processes from 1 to something larger. Change this in the same place as the setting above.
- Make sure there are no recycling conditions selected in the dialog that comes up when you right click on the SM_AppPool and choose Recycling…
- Disable logging – expand Sites, select the SCSMPortal web site, double click Logging, click Disable in the Actions pane on the right. Restart the web site.
Hope that helps!