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

From Sylvain Ross
Subject Re: What is wrong with pg_pconnect() ?
Date
Msg-id IAEMIKOELLIGJPKPFJBOMECLCAAA.jfk@fleming.u-psud.fr
Whole thread Raw
In response to Re: What is wrong with pg_pconnect() ?  ("scott.marlowe" <scott.marlowe@ihs.com>)
Responses Re: What is wrong with pg_pconnect() ?  ("Rod K" <rod@23net.net>)
List pgsql-php
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 ?

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

- a new client "Client B" now connects itself to apache process 8888 (why
this process and not another living idling apache process ? :)), I guess any
similar pconnect will use the already existing pgsql connection.


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


pgsql-php by date:

Previous
From: "scott.marlowe"
Date:
Subject: Re: What is wrong with pg_pconnect() ?
Next
From: "Rod K"
Date:
Subject: Re: What is wrong with pg_pconnect() ?