In my case they appear to be left open indefinitely, until Apache is 
restarted.  This is not what's supposed to happen, of course.  I 
haven't tried tuning low_idle (I think that's what it's called, from 
the mysql_connect() doc at php.net).  I probably should try  that as 
well.  I'm sure persistent connections make a big difference for an 
Oracle-class database, where the startup time for a connection is 
large.

On Thursday 03 May 2001 07:14 pm, Paul DuBois opined:
> At 9:35 AM -0700 5/3/01, Scott Baker wrote:
> >That's very odd...  Technically pconnect should be a lot faster,
> > not sure exactly why it's not.  The other thing you might want to
> > look at is the MySQL idle timeout (or something like that). 
> > That's how long your pconnects stay connected if they don't
> > transfer any traffic.  I think it defaults to 30 minutes, which
> > is probably ok. Depending on the traffic of your site.
>
> For most databases pconnect() is faster.  But it turns out MySQL is
> so fast at making connections that pconnect() doesn't give much
> advantage, if any.  So regular connect() can be advantageous in
> terms of not leaving as many connections open.
>
> >At 09:27 AM 5/4/2001 -0700, Gary Bickford wrote:
> >>Thanks for the reply!, Scott!  I considered changing the number
> >> of allowed connections but I figured this would just defer the
> >> problem, as the root problem was the increasing number of
> >> connections.
> >>
> >>Last night I went through the entire website looking for code
> >> that used mysql_pconnect() in PHP, which provides 'persistent'
> >> connections.  I had thought before that I had caught all of
> >> these but found another 40 or so files that had either been
> >> missed or magically appeared.  I converted all those to standard
> >> mysql_connect() calls and ran a stress test all night - using
> >> wget to fetch 1000 pages as fast as possible from a neighboring
> >> machine, over and over.
> >>
> >>On the server I have a loop running like this:
> >>
> >>    N=1; while [ $N -ge 1 ]; do ps aux|grep mysql |wc; sleep 5;
> >> done
> >>
> >>which shows the number of mysql processes every five seconds or
> >> so. I had run this test earlier and over two hours' time the
> >> number of connections increased to about 22.  After changing all
> >> the mysql_pconnect() calls to mysql_connect(), and leaving the
> >> wget job running all night (the 'at' job I set up to kill it
> >> while I was sleeping failed), the number of connections was
> >> still at 5.  This involved fetching almost 400,000 pages.
> >>
> >>So it appears that the increasing number of connections has to do
> >>with some persistent connections never being closed, although PHP
> >>thought they were.  Determining if this is a PHP, MySQL, Apache
> >> or Redhat problem is beyond my desired effort and code
> >> experience level. At least all parts are open source!!
> >>
> >>Interestingly, the rate at which wget could fetch pages almost
> >>doubled while the server's CPU load dropped from 86% to 77%,
> >> which bears out the experience of some others on various PHP
> >> lists. Some users get dramatic improvements using
> >> mysql_pconnect(), others don't.
> >>
> >>I will now make another pass at a couple of pages that seemed to
> >> be the focus of the errors that users received, to see if I can
> >> improve the error handling (and maybe mail myself a message!). 
> >> For now, I'm calling the bug worked-around.
> >>
> >>GB
> >>
> >>On Wednesday 02 May 2001 04:43 pm, Scott Baker opined:
> >>>  You can look into increasing the number of allowed connections
> >>> that MySQL will accept... are you using connect or pconnect?
> >>>
> >>>  At 04:23 PM 5/3/2001 -0700, Gary Bickford wrote:
> >>>  >Repost - nobody has any ideas?  I've run some stress tests,
> >>>  > sending several thousand page requests, and the number of
> >>>  > mysql processes goes up and down but over time continues to
> >>>  > rise.  It's up to about 22 now.  When it gets to about 30,
> >>>  > every request from the web server will be will fail.
> >>>  >
> >>>  >Could some of these processes be threads that are orphaned
> >>>  > for some reason (perhaps Apache continuing to expire its own
> >>>  > processes?) and hang around, idle?  I speculate that there
> >>>  > is some maximum number of processes and finally MySQL can't
> >>>  > won't start another thread/process. GB
> >>>  >
> >>>  >On Tuesday 01 May 2001 05:26 pm, Gary E Bickford opined:
> >>>  > > I am running MySQL (3.23.27 at this point) with
> >>>  > > Apache1.3.12 and PHP3 on a PC running Redhat 6.0.  My
> >>>  > > problem has survived upgrades of all components from
> >>>  > > earlier versions.
> >>>  > >
> >>>  > > Every PHP page has at least one query to a MySQL database
> >>>  > > for
> >>>  > >
> >>  > > > session tracking (home-rolled code, not PHPLib or
> >>  > > > anything off
> >>>  > >
> >>>  > > the shelf)  There are also on some pages other queries, to
> >>>  > > a different database, same server (same mysql).  Most of
> >>>  > > the latter are Phorum queries.
> >>>  > >
> >>>  > > Periodically the number of mysql instances that show up in
> >>>  > > 'ps auxww'1 gets to about 30 and mysql no longer listens
> >>>  > > to PHP/Apache. However I can still use the mysql shell
> >>>  > > with no problem, so MySQL is still running but can't hear
> >>>  > > anything from PHP.
> >>>  > >
> >>>  > > The only way to fix it is to run 'apachectl restart' or
> >>>  > > equivalent. 'graceful' doesn't do it.  I"m not sure if
> >>>  > > restarting MySQL instead works.  After Apache is
> >>>  > > restarted, the mysql processes are down to 3 and
> >>>  > > everybody's happy again.
> >>>  > >
> >>>  > > I have been trying for months to figure out what is
> >>>  > > happening and how to fix it.  I had heard at one point
> >>>  > > that there was a problem with Redhat 5.2 kernel that
> >>>  > > caused a similar problem, but I upgraded that but no joy.
> >>>  > >
> >>>  > > Temporarily I have built a kluge cron job that restarts
> >>>  > > apache every so often, which worked as long as the server
> >>>  > > was low volume. But now usage is dramatically increasing
> >>>  > > due to some new web sites that have been installed and
> >>>  > > announced to the entire corporation. So the problem is
> >>>  > > triggered before the restart cleans up the mess. I can't
> >>>  > > have it restarting every 20 minutes.
> >>>  > >
> >>>  > > I've also changed every instance of pconnect() to
> >>>  > > connect() where I can, but no difference.
> >>>  > >
> >>>  > > Can anybody tell me anything useful?  I'm supposed to come
> >>>  > > back with a firm fixit schedule tomorrow morning, so
> >>>  > > please email me directly as well as on the list - I'm
> >>>  > > afraid I'll miss it in the volume on the list. If I don't
> >>>  > > get this fixed very shortly my consulting contract with
> >>>  > > this company will no doubt begin to fade out!!
> >>>  > >
> >>>  > > Thanks in advance,
> >>>  > >
> >>  > > > Gary Bickford

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to