Well, at this point it is only leaking 1k per request; that doesn't "sound" overly complicated to fix. Do you have an idea of what particularly TSRM is leaking, after ts_thread_free() is called? I'd be happy to poke around the code.
Alex On 12/21/01 2:38 PM, "Zeev Suraski" <[EMAIL PROTECTED]> wrote: > The way TSRM is written is not designed for servers that don't reuse > threads for more than one request, so if that's how it works - you're going > to see a growing memory image all the time :I > > At 22:16 21/12/2001, Alex Leigh wrote: >> Ok. I looked at the ISAPI code, and I am now calling ts_thread_free() when >> the handler exits. This seems to have cleared up the problem immensely, but >> it's still leaking to the tune of ~1k per request. I'll go over my SAPI >> module again to verify that is not the cause of the 1k leak. >> >> Also with php4-20011217120 randomly (13 times in 5000 requests), the page >> (1k test data with no php script commands) fails to serve. Php writes: >> >> Unknown(0) : Warning - Failed opening >> '/web02/content/_default/_default/k1.php' for inclusion >> (include_path='.:/usr/local/lib/php') >> >> To stdout >> >> Alex >> >> On 12/21/01 12:52 PM, "Andi Gutmans" <[EMAIL PROTECTED]> wrote: >> >>> Check out DllMain() in php4isapi.c. >>> Are you running the thread attach and thread detach code? >>> >>> Andi >>> >>> At 12:43 PM 12/21/2001 -0600, Alex Leigh wrote: >>>> It can do both. In the testing configuration, it is not pooling but >>>> destroying the threads. They are created as detached threads, which at >> least >>>> on Solaris go away after they terminate; the ones that exit aren't >> building >>>> up in the process (I verified this with pstack). I am not specifying an >>>> explicit cleanup handler for the threads, if that makes any >> difference; they >>>> are exiting normally by returning off the function called in >>>> pthread_create(). >>>> >>>>> Does this web server spawn a new thread for each request? Or does it >> reuse >>>>> its threads? >>>>> >>>>> Andi >>>>> >>>>> At 12:22 PM 12/21/2001 -0600, Alex Leigh wrote: >>>>>> I'm sure it's leaking, it'll readily consume a gig of memory and >> shows no >>>>>> signs of slowing down. I originally was calling phpinfo(), but it also >>>> leaks >>>>>> equally if I just have the php handler serve a page with no php in it. >>>>>> >>>>>> So, yes, it leaks that amount every request and it never frees. >>>>>> >>>>>> The code as I mentioned is a copy of the NSAPI module (nearly >> identical), >>>>>> and it basically does: >>>>>> >>>>>> if (php_request_startup(TSRMLS_C) == FAILURE) { >>>>>> return FAILURE; >>>>>> } >>>>>> >>>>>> ... >>>>>> >>>>>> php_execute_script(&file_handle TSRMLS_CC); >>>>>> php_request_shutdown(NULL); >>>>>> >>>>>> Alex >>>>>> >>>>>> On 12/21/01 10:28 AM, "Zeev Suraski" <[EMAIL PROTECTED]> wrote: >>>>>> >>>>>>> Are you calling request_shutdown? >>>>>>> Also, are you sure it's actually leaking? Does it leak 200-400KB >> on each >>>>>>> and every request, or does this rate 'slow down' at some point? >>>>>>> >>>>>>> Zeev >>>>>>> >>>>>>> At 18:20 21/12/2001, Alex Leigh wrote: >>>>>>>> All - >>>>>>>> >>>>>>>> I have written a SAPI module for a new webserver "continuity". The >>>> code is >>>>>>>> basically the SAPI code for NSAPI, modified to work with >>>> continuity's API. >>>>>>>> Continuity is threaded, based on the pthread libraries. >>>>>>>> >>>>>>>> My problem is that each requests that is handled by PHP leaks about >>>>>>>> 200-400KB. I've gone over the code carefully, and I don't see that >> I am >>>>>>>> doing (or more importantly, not doing) anything differently than any >>>>>> of the >>>>>>>> other SAPI modules. >>>>>>>> >>>>>>>> I have tried php4-4.1.0, as well as the 12/17 cvs snapshot, on both >>>> Linux >>>>>>>> and Solaris. I did not configure php with any options other than >> that to >>>>>>>> include my sapi module "--with-capi". >>>>>>>> >>>>>>>> If someone could give me a reference to SAPI documentation (none of >>>>>> which I >>>>>>>> could find), or give me a lead on what my problem might be, I'd >>>> appreciate >>>>>>>> it. >>>>>>>> >>>>>>>> My SAPI code can be had at >>>>>>>> http://www.ashpool.com/dist/php4-capi-v200-p1.tar.gz >>>>>>>> >>>>>>>> -- >>>>>>>> Alex Leigh - www.tessier.com - [EMAIL PROTECTED] >>>>>>>> The difference between theory and reality is that >>>>>>>> in theory there is no difference. >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> PHP Development Mailing List <http://www.php.net/> >>>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>>>>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>>>>>> To contact the list administrators, e-mail: >> [EMAIL PROTECTED] >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> PHP Development Mailing List <http://www.php.net/> >>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>>>> To contact the list administrators, e-mail: [EMAIL PROTECTED] >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> PHP Development Mailing List <http://www.php.net/> >>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>> To contact the list administrators, e-mail: [EMAIL PROTECTED] >>> >> >> >> -- >> PHP Development Mailing List <http://www.php.net/> >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> To contact the list administrators, e-mail: [EMAIL PROTECTED] > > -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]