Can you please send the patch? If it got stripped, then maybe post a URL.
Thanks. At 01:49 PM 6/24/2005 -0700, Andrew Prendergast wrote:
Just to add, with the patch one can set PHP_FCGI_MAX_REQUESTS quite high, which will give a big reqs/sec performance boost, eg: PHP_FCGI_CHILDREN=10 PHP_FCGI_MAX_RAM_INCREASE=25 PHP_FCGI_MAX_REQUESTS=20000 ap. On Fri, June 24, 2005 13:15, Andrew Prendergast said: > Resend. List serv problems. > > ap. > > > ---------------------------- Original Message ---------------------------- > Subject: Re: PHP memory fragmentation > From: "Andrew Prendergast" <[EMAIL PROTECTED]> > Date: Sun, June 12, 2005 21:09 > To: internals@lists.php.net > -------------------------------------------------------------------------- > > Please find attached a diff against HEAD & a modified version of the file > implementing my proposed PHP_FCGI_MAX_RAM_MB & PHP_FCGI_MAX_RAM_INCREASE > changes. > > Example invocation of PHP with 10 child processes that are automatically > restarted if they increase in size by more than 25%: > > PHP_FCGI_CHILDREN=10 > PHP_FCGI_MAX_RAM_INCREASE=25 > PHP_FCGI_MAX_REQUESTS=20 > export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS PHP_FCGI_MAX_RAM_INCREASE > /usr/local/zeus/web/bin/fcgirunner \ > --user=www --group=www 8002 \ > /usr/src/usr.local/php-5.0.4/sapi/cgi/php -c /usr/local/lib/php.ini > > Compile with -DDEBUG_FASTCGI to see whats going on. > > I've been testing it for the last 24 hours with various volumes of data > and it definitely does the trick. > > Regards, > > ap. > > > > On Sat, June 11, 2005 18:36, Andrew Prendergast said: >> After a bit more investigation, I would like to change this paragraph: >> >> Once a script finishes executing, although the garbage collector > technically has freed the ram, the pages are still allocated. The next > time the thread executes, there is a whole pile of swapping and if a > memory hungry script gets run again, the memory footprint increases. >> >> To: >> >> Once a script finishes executing, although the garbage collector > technically has freed the ram, the pages are still allocated. If the > thread is re-used, even for a small script, much of the previously > swapped out ram is swapped back in due to fragmentation. The memory > footprint of the thread will increase further if a different memory > hungry script is executed, or a small script that has a different > allocation pattern to the first memory eating script is executed. >> >> Regards, >> >> ap. >> >> >> >> On Sat, June 11, 2005 16:30, Andrew Prendergast said: >>> Hey Folks, >>> >>> I'm not on the list so please reply back to my email. >>> >>> I have been having some problems with memory fragmentation in PHP when > working with large data structures. >>> >>> Once a script finishes executing, although the garbage collector > technically has freed the ram, the pages are still allocated. The next > time the thread executes, there is a whole pile of swapping and if a > memory hungry script gets run again, the memory footprint increases. >>> >>> Now consider what happens when I have 20 processes in an FCGI pool, > each one getting above 300MB in size, its not good. >>> >>> My solution which I have implemented as part of the FCGI SAPI (thanks > to GeorgeS, hartmut, Pierre & Derick for their guidance) is the >>> introduction >>> of two new environment variables, PHP_FCGI_MAX_RAM_MB & >>> PHP_FCGI_MAX_RAM_INCREASE. >>> >>> PHP_FCGI_MAX_RAM_MB allows one to set a limit (in megabytes) of how >>> large >>> an FCGI process is allowed to grow to. >>> >>> PHP_FCGI_MAX_RAM_INCREASE allows one to set a maximum % increase >>> compared >>> to when the process first started. >>> >>> If either of these limits are exceeded, the process will be restarted > AFTER script execution has completed (unlike the --enable-memory-limit > stuff). >>> >>> Please get back to me on: >>> >>> 1. your thoughts on this >>> >>> 2. an idea of how big an average PHP process should be (mine are 150MB > when they start, 160MB after running some average scripts, and grow to > above 300 MB when working with big data structures and complex object > caching code) >>> >>> 3. how do i get this back into the PHP source tree! (sorry newbie) >>> >>> Regards, >>> >>> ap. >>> >>> >> >> > > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php