I saw this problem reported on a Windows 2000 Server (IIS 5.0), I’ve not checked if the same could also happen on IIS 6/7…
The application is build on classic ASP pages and the error appeared about once per day on a test server; when browsing the user got a message reading "unable to create new session" (rough translation from Italian), and when this happens the only solution was to reset IIS (while in that status, even static HTML content was not served).
Interestingly the Event Log showed quite a few entries like the following:
Event Type: Warning
Event Source: COM+
Event Category: Activation
Event ID: 4238
Date: 03/07/2007
Time: 11.05.49
User: N/A
Computer: xxxxxxxxDescription:
COM+ has determined that your machine is running very low on available memory. In order to ensure proper system behavior, the activation of the component has been refused. If this problem continues, either install more memory or increase the size of your paging file. Memory statistics are:
dwMemoryLoad = 98
dwTotalPhys = 536358912
dwAvailPhys = 9453568
dwTotalPageFile = 1945448448
dwAvailPageFile = 48668672
dwTotalVirtual = 2147352576
dwAvailVirtual = 405975040Server Application ID: {3D14228D-FBE1-11D0-995D-00C04FD919C1}
Server Application Name: IIS Out-Of-Process Pooled Applications
This turned out to be due to a memory pressure problem in inetinfo.exe: a hang dump showed a problem with the ASP Template Cache which was using most of the memory (this usually happens when you have a lot of lines of code in one single ASP page, or your application heavily include files); here are some suggestions to mitigate the issue:
- Short-term: lower the number of cached ASP pages via the AspScriptFileCacheSize setting in the metabase (mentioned in http://support.microsoft.com/default.aspx?scid=kb;EN-US;914156)
- Medium-term: reduce the size of the templates (only include the absolutely necessary "include" files for a given page); also check 25+ ASP Tips to Improve Performance and Style
- Long-term: move to ASP.NET since it handles caching of objects more efficiently (if using UserControls versus Includes)
By the way, point number 1 above resolved the problem for the customer.
Even if not directly related to this problem, we disabled ScriptScan from McAfee, which is not supported server-side:
"When installed to a server, McAfee recommends that ScriptScan be disabled. Jscript and VBScript protection is intended for use with Microsoft Internet Explorer and Microsoft Outlook, which generally are not used on server platforms. Additionally, ScriptScan is not designed for high-throughput requirements of servers"
Carlo
Quote of the Day:
Many people take no care of their money till they come nearly to the end of it, and others do just the same with their time.
–Goethe