Our client app is basically a 'plug-in' OCX that is called by host systems and is used in call-centre environments to handle scripted dialogs with telephone callers.
At some point, the host instucts the OCX to launch a modal browser window. This then enters a succession of remote scripting calls to the server (running ASP plus VB DLLs) to conduct the question and answer session then in conclusion sets a Status inside a SQL Server database.
Meanwhile, the OCX merrily polls (yeek) the server at at 0.5 second intervals by calling an ASP page, waiting for a status change at which point it gathers all it needs from the database to return to the calling host.
For just about every ASP page loaded on the server, we late bind via a CreateObject("Msxml2.DOMDo
cument") and load an XML configuration document that drives the behaviour of the application.
Not your best architecture, but anyway...
Whilst the polling is underway, W3WP.EXE's memory utilisation reapidly increases in about 15KB chunks, roughly the size of the XML config document plus some overhead. This is clearly the case; depositing a load of dummy XML in the file is reflected by bigger chunks.
As you can imagine, this goes on until memory consumption gets silly then CPU starts to rise and eventually everything collapses. Until I am sure there is no alternative, I want to avoid recycling worker processes for the App Pool etc. I'd really like to avoid interruption of the often long conversations operators have with callers.
Once the OCX stops polling, memory is returned but very slowly and never all of it. Through code examination and other tests, we are fairly sure that there are no leaks in the application, well, certainly not on the scale witnessed.
I am aware of http://support.microsoft.com/kb/304227
but as our website doesn't run on dedicated servers I need to be certain this won't impact others.
Is MSXML caching like mad, is there any way to control this or can anyone give me deeper insight into what's going on?,
This is all under II6.0 on Server 2003 SP1.