I am not quite sure, but you can give a try.  Use require_once() include 
like 10 dummy config file, reload the script a couple times, and use lsof 
to check if your config files are still open.

Derek


At 03:04 PM 5/9/2001 +1000, Cameron wrote:
>i dont suppose this is a session garbage collection??
>
>
>Cameron
>
>[EMAIL PROTECTED] wrote:
>
> > ID: 10299
> > User Update by: [EMAIL PROTECTED]
> > Status: Critical
> > Bug Type: Performance problem
> > Operating system: FreeBSD 4.2 Stable
> > PHP Version: 4.0.4pl1
> > Description: CPU and Memory Spike
> >
> > What I found out is that using a lot of include_once, require_once + 
> session will trigger the CPU and memory spike.  Add database access to 
> the script can speed up the frequency of the spike.  And I also found out 
> require_once DO leak memory.  pstat -T show that file in use will always 
> increase.  Somehow require_once forgot to close the file after use.  lsof 
> can give you a clear picture when you use require_once()
> >
> > I changed my code using cookie and require() statement now.  And I 
> delete all sess_files in /tmp seems to correct the problem.  This is the 
> only change I made to eliminate the problem.
> >
> > I can't reproduce the error now because the code that have problems 
> have been changed and I don't have the backup.  But the combination of A 
> lot of include_once, require_once, and session will trigger the spike, I 
> am pretty sure because after I changed all that, the problem 
> disappear.  Old session file in /tmp also contribute to the problem as well.
> >
> > BTW, the last time I checked, CVS version 4.06 in late April still have 
> the problem.
> >
> > Previous Comments:
> > ---------------------------------------------------------------------------
> >
> > [2001-05-08 19:26:01] [EMAIL PROTECTED]
> > Is this fairly reproducible?
> > If it is, any chance you could build Apache with debug information 
> (--enable-debug in configure), attach to an offending process (gdb 
> /path/to/httpd <PID>), and run a backtrace ('bt')?
> >
> > ---------------------------------------------------------------------------
> >
> > [2001-05-07 12:44:51] [EMAIL PROTECTED]
> > marking critical for php 4.0.6
> >
> > ---------------------------------------------------------------------------
> >
> > [2001-04-14 09:00:57] [EMAIL PROTECTED]
> > I found the problem.  since the script I use have a lot of include and 
> require statement.  just a script include a bunch of files and keep 
> reloading the page will kill the server in no time.  I attach a sample 
> config file I usually include, just make a test.php and include this file 
> like 10 times to simulate a lot of include files.  And then, just keep 
> reloading test.php.  You should see the script take a lot of CPU time and 
> eventually the httpd eat all the CPU time and the process hang.  From 
> command "top", one of the httpd process keep eating up CPU time.
> >
> > The following is the sample config file
> >
> > <?
> >
> > /*Root directory */
> > $config[root_path] = "/usr2/home/business/test/www";
> > $config[w3b_path] = "/usr2/home/business/test/www/wwwthreads";
> > $config[data_path] = "/usr2/home/business/test/data";
> > $config[rdf_path] = "/usr2/home/business/test/www/rdf";
> >
> > /* database */
> >
> > include $config[root_path]."/db.php";
> >
> > /* global */
> > $config[sitename] = "www.test.net";
> > $config[root_url] = "http://www.test.net/";;
> >
> > // Cookie Setting
> > $config[cookie_path]  = "/"; # web root directory
> > $config[CookieURL] = ".test.net";
> > $config[cookieTTL] = 7200; // in seconds
> >
> > $config[minpass]        = 3;  # Minimum user password length in characters
> >
> > /* language and locale */
> > $config[language]       = "english";    # [english] english, [big5] 
> BIG5 code
> >
> > $config[locale]         = "english";    # Used for translation of 
> date-related stuff
> >
> > /* story control */
> > $config[commentmax]     = 4096;
> > $config[abstractlen]    = 4996; #length of abstract show on first page
> >
> > $config[icon_width]     = 100;     # Topic icons width
> > $config[timezone] = "HKT";      #Time zone
> >
> > $config[limitnews]      = 10;   # default number of stories per page
> > $config[older_story_num]        = 10;   # number of older stories to 
> display
> >
> > $config[anon_users]     = 0; # 1 to allow anonymous postings
> >                                                  # 0 to disable
> >
> > /* theme control */
> >
> > $config[def_theme]      = "Main"; # name of default theme (see themes/ 
> directory for list)
> >
> > /* mail settings */
> > $config[use_fake_email] = 1; # Displays fake email addresses for users 
> instead of the real ones
> >
> > $config[notifyEmail]    = "[EMAIL PROTECTED]";         #address where 
> you want to receive notice
> >
> > //$config[CensorList]   = 
> array('fuck','cunt','fucker','fucking','pussy','cock','c0ck','cum','bitch','shit');
> > $config[CensorList] = array("/fuck/s","/fuck/s","/fuck/s",
> >                                 "/[a-z]*fuck[a-z]*/is",
> >                                 "/[a-z]*cunt[a-z]*/is",
> >                                 "/[a-z]*pussy[a-z]*/is",
> >                                 "/[a-z]*cock[a-z]*/is",
> >                                 "/[a-z]*c0ck[a-z]*/is",
> >                                 "/[a-z]*shit[a-z]*/is",
> >                                 "/[a-z]*bitch[a-z]*/is",
> >                                 "/[a-z]*diu[a-z]*/is"
> >                         );
> > # See also specific LOCALE definitions
> >
> > $config[CensorMode]   = 3;      # 0: no filtering
> >                         # 1: exact match
> >                         # 2: match word beginnings
> >                         # 3: match string anywhere in words
> > $config[CensorReplace]   =  "[CENSORED]" ;
> >
> > /* allowable HTML tags. Used by check_html()
> >    Happily lifted (with mods) from phpslash */
> > $config[AllowableHTML] = array("p"=>1,   # 2 means accept all 
> qualifiers: <foo bar>
> >                       "b"=>1,    # 1 means accept the tag only: <foo>
> >                       "i"=>1,
> >                       "a"=>2,
> >                       "em"=>1,
> >                       "br"=>1,
> >                       "strong"=>1,
> >                       "blockquote"=>1,
> >                                           "img"=>2,
> >                       "tt"=>1,
> >                       "hr"=>1,
> >                       "li"=>1,
> >                       "ol"=>1,
> >                                           "div"=>1,
> >                       "ul"=>1);
> >
> > $config[AllowableHTMLtag] = 
> "<b>,<i>,<a>,<em>,<br>,<strong>,<blockquote>,<tt>,<hr>,<li>,<ol>,<div>,<ul>";
> >
> > /* poll settings */
> >
> > $config[maxOptions]     = 12;   # maximal number of options allowed
> > $config[BarScale]       = 1;    # scale of result bar (in multiples of 
> 100 pixels)
> >
> > $config[warnCheaters]   = 1;    # 1 - a notice issued on vote second try
> >                         # 0 - silently ignores the vote
> >
> > $config[maxOptions] = 10;
> >
> > /* story stuff */
> >
> > $reasons = array('As is',       # "Normal"
> >                 'Offtopic',     # Bad Responses
> >                 'Flamebait',
> >                 'Troll',
> >                 'Redundant',
> >                 'Insightful',   # Good Responses
> >                 'Interesting',
> >                 'Informative',
> >                 'Funny',
> >                 'Overrated',            # Last two are "special"
> >                 'Underrated');
> >
> > if ($config[dateString] == "") {
> >         switch ($config[locale]) {
> >                 // specifier specs can be found on 
> http://www.php.net/manual/function.strftime.php  /menthos
> >                 case "english": $config[dateString] = "%a, %b %d,%Y @ 
> %I:%M %p"; break;
> >                 case "french":  $config[dateString] = "%a %d %B %Y 
> &agrave; %H:%M"; break;
> >                 case "german":  $config[dateString] = "%a, %d. %b %Y 
> %H:%M"; break;
> >                 case "italian": $config[dateString] = "%a %d %b %Y 
> %H:%M"; break;
> >                 case "swedish": $config[dateString] = "%a %d %b %Y, 
> %H:%M"; break;
> >                 case "dutch":   $config[dateString] = "%a, %d. %b %Y 
> %H:%M"; break;
> >                 case "spanish": $config[dateString] = "%a %d %b %Y 
> %H:%M"; break;
> >                 default:        $config[dateString] = "%a %b %d @ 
> %H:%M"; break;
> >         }
> > }
> >
> > ?>
> >
> > ---------------------------------------------------------------------------
> >
> > [2001-04-14 07:59:05] [EMAIL PROTECTED]
> > This is vmstat show if I keep reloading the script
> >
> > procs      memory     page                    disks     faults      cpu
> >  r b w     avm   fre  flt  re  pi  po  fr  sr da0 da1   in   sy  cs us 
> sy id
> >  1 4 0   73860 13432    4   0   0   0   0   0   2   0  382 3804 258 
> 16  1 83
> >  0 4 0   73860 13424    4   0   0   0   0   0   0   0  357 3789 245 
> 15  4 81
> >  1 4 0   73860 13424    4   0   0   0   0   0   0   0  373 3763 263 
> 14  3 83
> >  2 4 0   73860 13416  142   0   0   0 139   0   0   0  402 6155 285 
> 26  4 70
> >  0 4 0   73860 13408    4   0   0   0   4   0  11   0  366 3179 220 
> 11  2 87
> >  1 4 0   73860 13400    4   0   0   0   0   0   0   0  358 3943 257 
> 15  3 82
> >  2 4 0   73860 13400    4   0   0   0   0   0   0   0  340 4201 240 12 
> 42 45
> >  2 4 0   73860 13400    4   0   0   0   0   0   0   0  240 1842  90  0 
> 100  0
> >  2 4 0   73116 13400    4   0   0   0   0   0  19   0  265 1802  98  0 
> 100  0
> >  2 4 0   73116 13400    4   0   0   0   0   0   0   0  241 1753  93  0 
> 100  0
> >  2 4 0   73116 13400    4   0   0   0   0   0   0   0  239 1729  96  0 
> 100  0
> >  2 4 0   73116 13400    4   0   0   0   0   0   0   0  241 1612  94  0 
> 100  0
> >  2 4 0   73116 13400    4   0   0   0   0   0   0   0  243 1576  97  0 
> 100  0
> >  2 4 0   73116 13400    4   0   0   0   0   0   0   0  243 1541  98  0 
> 100  0
> >  2 4 0   73116 13400    4   0   0   0   0   0   0   0  239 1487 102  0 
> 100  0
> >  2 4 0   73116 13400    4   0   0   0   0   0   0   0  241 1401  93  0 
> 100  0
> >  2 4 0   73116 13400    4   0   0   0   0   0   0   0  251 1405 100  0 
> 100  0
> >  2 4 0   73116 13400    4   0   0   0   0   0   0   0  246 1338 101  0 
> 100  0
> >  2 4 0   73116 13400    4   0   0   0   0   0   0   0  238 1297  94  0 
> 100  0
> >  2 4 0   73860 13400    4   0   0   0   0   0   0   2  243 1282 100  0 
> 100  0
> >  2 4 0   73860 13400    4   0   0   0   0   0   0   0  239 1223  89  0 
> 100  0
> >  2 4 0   73860 13400    4   0   0   0   2   0   9  16  300 1180  92  0 
> 100  0
> >  procs      memory     page                    disks     faults      cpu
> >  r b w     avm   fre  flt  re  pi  po  fr  sr da0 da1   in   sy  cs us 
> sy id
> >  3 4 0   73860 13400    4   0   0   0   0   0   0   0  251 1156  90  0 
> 100  0
> >  3 4 0   50296 13400    4   0   0   0   0   0   6   0  258 1116  93  0 
> 100  0
> >  2 4 0   50296 13400    4   0   0   0   0   0   0   0  240 1108  83  0 
> 100  0
> >  3 4 0   50296 13400    4   0   0   0   0   0   0   0  245 1064  92  0 
> 100  0
> >  3 4 0   46988 13400    4   0   0   0   0   0   0   0  242 1031  83  0 
> 100  0
> >  3 4 0   46988 13400    4   0   0   0   0   0   0   0  242  989  82  0 
> 100  0
> >  2 4 0   46988 13400    4   0   0   0   0   0   0   0  243 1010  85  0 
> 100  0
> >  2 4 0   46988 13400    4   0   0   0   0   0   1   0  241  985  81  0 
> 100  0
> >  2 4 0   46988 13400    4   0   0   0   0   0   0   0  241  971  89  1 
> 99  0
> >  2 4 0   46988 13400    4   0   0   0   0   0   0   0  243  940  74  0 
> 100  0
> >  3 4 0   46988 13400    4   0   0   0   2   0   8   0  250  926  80  0 
> 100  0
> >  2 4 0   46988 13400    4   0   0   0   0   0   1   0  245  930  88  0 
> 100  0
> >  3 4 0   46988 13400    4   0   0   0   0   0   0   0  240  905  80  0 
> 100  0
> >  2 4 0   46988 13400    4   0   0   0   0   0   7   0  253  920 100  0 
> 98  2
> >  3 4 0   47332 13056   90   0   0   0   0   0   0   0  239 2113 116  3 
> 97  0
> >  2 4 0   46588 13048    4   0   0   0   0   0   1   0  243 2334 103  1 
> 99  0
> >  1 4 0   46244 13392    4   0   0   0  86   0   8   0  276 4383 140  7 
> 19 74
> >  1 4 0   47896 
> 13184   59   0   0   0   0   0   2   0  275  621  56  7  1 92
> >  0 4 0   47896 
> 13152   20   0   0   0   0   0   1   0  253  471  46  6  1 93
> >  1 4 0   47492 
> 13372   18   0   0   0  64   0   0   0  251  478  43  0  1 99
> >  0 4 0   47492 
> 13372    4   0   0   0   0   0   0   0  235  440  40  0  0 100
> >  0 4 0   47492 
> 13372    4   0   0   0   0   0   0   0  238  442  40  0  2 98
> >
> > The CPU time drop from 80 all the way to zero and make the Apache hang 
> for like 30 seconds and the resume back again.  It happens VERY often if 
> I only have like 30 users surf the website at the same time.  It pretty 
> much bring the web server down if I have around 50 users surft the site
> >
> > ---------------------------------------------------------------------------
> >
> > [2001-04-11 18:03:59] [EMAIL PROTECTED]
> > I am running on FreeBSD 4.2 Stable, Apache 1.3.19 + PHP 4.0.4pl1 + 
> Modssl on a Dual P2 400mhz with 256mb ram.  From time to time, one of the 
> httpd process will eat up all the CPU time and memory, and after around 5 
> to 10 seconds, it goes back to normal  Even a Very simple script like
> >
> > <?
> > echo "test";
> > ?>
> >
> > can make it happen. 1 out of 25 reload of the above script can make the 
> spike happen.  But the web server do not crash though.  If I run on a 
> script with heavy database access, it happen 1 out of 10 if I press 
> reload button continously.
> >
> > BTW, is that normal for Apache to take up 30% of the CPU time to excute 
> one single PHP-database-driven page?
> >
> > I search the bugs database and I found another user have the exact 
> problem like what I am having right now.  His bug id is #9154.
> >
> > This is how I configure PHP
> > ./configure  --with-mysql=/usr/local/mysql 
> --with-apxs=/usr/local/apache/bin/apxs 
> --with-config-file-path=/usr/local/etc --enable-track-vars 
> --enable-ftp  --with-gd=/usr/local --with-pcre-regex=/usr/local/
> > --with-jpeg-dir=/usr/local --with-xpm-dir=/usr/X11R6
> >
> > With or Without modssl enable does not make a difference.  Both can 
> cause the spike.
> >
> > ---------------------------------------------------------------------------
> >
> > The remainder of the comments for this report are too long.  To view 
> the rest of the comments, please view the bug report online.
> >
> > Full Bug description available at: http://bugs.php.net/?id=10299
> >
> > --
> > 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]

Reply via email to