Re: apache-php-postgresql connection question\

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



On Thu, 31 Jan 2002, Frank Bax wrote:

> At 12:11 PM 1/31/02 -0700, tom.kemp@xxxxxxxxxxx wrote:
> >Also, if I do a persistent connection, it appears that PHP will try to
> >use this connection if it exists, prior to creating a new persistent
> >connection, right?  Well, does it only reuse the already connected
> >persistent if it is the same user?  How does this work?  Does it check
> >that it is the same user/password (does my script have to supply this
> >in the second persistent connection function) prior to using the
> >preexisting connection? Is it tied to the current browser request?
> 
> We've talked a lot about pg_pconnect this week; I'll try to summarise what
> we've learned...
> 
> Each browser request from client is handled by an apache child process on
> server.  Apache uses multiple child processes running concurrently to
> handle these browser requests.
> 
> pg_pconnect will reuse a previously created connection to the database if
> the previous connection was made within the same apache child process *and*
> the connect string is "identical" (same host, database, username, password).
> 	http://www.php.net/manual/en/features.persistent-connections.php
> Using pg_pconnect() over pg_connect() may not always be a huge saving.
> Persistant connections are typically desired if your database server is a
> separate box from your webserver.  If these servers are in the same box,
> and query execution time is dominate factor on your system, then there is
> minimal saving with pg_pconnect over pg_connect.  If you have simple, very
> fast queries, then TCP connect and fork/exec (of the postgres backends)
> overhead may dominate and pg_pconnect wins again.

Of course, we're optimizing for time, here.  pconnect has a BIG overhead:
it increases the memory footprint of your application a lot. You see
it on the host which is running postgresql, of course. So use pconnect()
if you've got RAM to spare (and on a large DB server, RAM is never enough).
What I mean here is that it's never a win, it's always a tradeoff.

> If you support many different connect strings, then there is another factor
> to consider.  You should expect to see many postgres client connections
> running on your server:
> A) Number of unique connect strings used.
> B) Number of active apache child processes.
> 
> Multiply A*B to get max number of possible concurrent connections on your
> system (max_connections in postgresql.conf).  If A*B can go over postgres
> connection limit, then you might start getting connection refused messages;
> in which case you might consider pg_connect.  Otherwise, you move security
> code into your php scripts and use a single username for database access.
> 
> Frank
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
> 

.TM.
-- 
      ____/  ____/   /
     /      /       /			Marco Colombo
    ___/  ___  /   /		      Technical Manager
   /          /   /			 ESI s.r.l.
 _____/ _____/  _/		       Colombo@xxxxxx



[Index of Archives]     [Postgresql General]     [Postgresql Admin]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Yosemite Backpacking]     [Postgresql Jobs]

  Powered by Linux