Re: What is wrong with pg_pconnect() ? - Mailing list pgsql-php

From Rod K
Subject Re: What is wrong with pg_pconnect() ?
Date
Msg-id KNEPILBLIADCDMMPIKIKCEHDDNAA.rod@23net.net
Whole thread Raw
In response to Re: What is wrong with pg_pconnect() ?  ("Sylvain Ross" <jfk@fleming.u-psud.fr>)
List pgsql-php


> -----Original Message-----
> From: pgsql-php-owner@postgresql.org
> [mailto:pgsql-php-owner@postgresql.org]On Behalf Of Sylvain Ross
> Sent: Monday, December 15, 2003 5:54 PM
> To: scott.marlowe
> Cc: pgsql-php@postgresql.org
> Subject: Re: [PHP] What is wrong with pg_pconnect() ?
>
>
> Oh, sorry pal, I were convinced that the child process were
> destroyed after
> the keepalived connection has died.
>
> In fact what happens with apache is (if I have understand correctly) :
>
> - The apache child process (pid 8888) is created with "Client A" connected
> on it.
>
> - if "Client A" don't query the server for 15 secondes (keepalive
> timeout),
> "Client A" is disconnected from the apache child process, pid
> 8888. BUT the
> apache child process 8888 is still alive waiting for connections ?

Yes

>
> - If "client A" had launched a script using a pconnect() call, a
> connection
> has been created beetween a pgsql process and process 8888.

Yes

>
> - a new client "Client B" now connects itself to apache process 8888 (why
> this process and not another living idling apache process ? :)),

That's controlled by the root apache process.  It may or may not be a
different process.

> I guess any
> similar pconnect will use the already existing pgsql connection.

Only in the same apache child.

>
>
> I wish I'm right !
>
> Thx in advance.
>
> Sylvain.
>
> -----Message d'origine-----
> De : pgsql-php-owner@postgresql.org
> [mailto:pgsql-php-owner@postgresql.org]De la part de scott.marlowe
> Envoye : lundi 15 decembre 2003 22:55
> A : Sylvain Ross
> Cc : pgsql-php@postgresql.org
> Objet : Re: [PHP] What is wrong with pg_pconnect() ?
>
>
>
> As Rod pointed out, you likely aren't having dead apache children, just
> too many.
>
> IF you must have pconnects in your code, then you need to configure your
> apache server and postgresql server so that the postgresql server can
> spawn more children than the apache server.
>
> Set MaxClients in httpd.conf to something MUCH lower than the default
> of 150.  Usually 20 to 50 will be plenty.  Restart apache.
>
> Then, set postgresql to handle at least 2x as many backends as with the
> max_connections setting and restart it.
>
> Now, you should be able to handle pconnects.
>
> My personal testing has shown my dual PIII-750 (being retired at the end
> of the month) can handle about 1,000 to 10,000 pg_connects a second, and
> about 100,000 to 1,000,000 pg_pconnects a second.  Since the average page
> build / delivery time on our intranet server is around 0.5 to 1.5 seconds,
> the speed of connections is pretty much noise.  We have templating,
> database accesses, and httpd authentication via LDAP on each page, and the
> biggest eater of CPU time is the httpd->LDAP authentication, followed by
> the templating, followed by the database layer.  I.e. Postgresql and its
> connections are the least of our worries. :-0
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
>       subscribe-nomail command to majordomo@postgresql.org so that your
>       message can get through to the mailing list cleanly
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
>       subscribe-nomail command to majordomo@postgresql.org so that your
>       message can get through to the mailing list cleanly
> >



pgsql-php by date:

Previous
From: "Sylvain Ross"
Date:
Subject: Re: What is wrong with pg_pconnect() ?
Next
From: Noel
Date:
Subject: Re: Cancel a query when user leaves a web page