Although very well documented, it looks like the ConnsPerThread configuration parameter is unimplemented. I've checked in 3.4, 3.5 and 4.0beta8. Can anyone confirm this? Is there any special reason why it is not implemented?
Now on to the real questions . . . We have an aolserver here that is setup as an xml-rpc server. It currenlty handles about 200000-300000 requests a day so it deals w/ twice that number of xml documents each day (request and response). Currently we need to restart nsd about once a week because it runs out of memory. I've gone through the hassle of loading everything into purify, and even though the process grows to about 150MB, it reports only about 20k of leaked memory. After a lot of debugging I've come to the following conclusion: It looks like ns_xml doc delete $id does not free _all_ resources used for that document. Some information is kept around for cleanup later. Under aolserver 3.x (and later I assume) this cleanup in handled by a call to Ns_TclRegisterDeferred which will not get called till the interpreter is cleaned up (which may never happen). Under previous versions of aolserver this cleanup was called by executing an ns_atclose command which would execute once the connection is closed. (look for the #ifdef NS_AOLSERVER_3_PLUS line in the code). So, under v3.x since the interpreters are not deleted till shutdown, the cleanup handlers don't get called and the process ends up using a ton of memory - non of which is reported as leaked because it cleans it up when the server shuts down. I've changed the code to call Ns_RegisterCleanup instead of Ns_TclRegisterDeferred, but that really freeked out the system, eventually resulting in segfaults. So then I changed the code to do what it did in pre 3.x versions of aolserver and everything seems to be peachy-keen. Now that the disertation is over . . . does any of that make sense? It doesn't seem like I should have to schedule the at_close to happen (or at least there should be an equivelent C call), and I would think calls to ns_xml doc delete should cleaup _everything_. And what's with the un-implemented connsperthread anyway???? Or am I completly wrong here? One other note. We've been using libxml 2.4.22 forever and tried to upgrade to 2.5.7 - but aolserver seems to segfault on invalid xml documents under 2.5.7 and it has something to do with the ctxt->_private variable being used to store a pointer to the interpreter. Is it possible 2.5.7 uses this field in a different way? Thanks for any information, Matthew Krenzer -- AOLserver - http://www.aolserver.com/ To Remove yourself from this list: http://www.aolserver.com/listserv.html List information and options: http://listserv.aol.com/