Re: What is wrong with pg_pconnect() ?

From: "Sylvain Ross" <jfk(at)fleming(dot)u-psud(dot)fr>
To: "scott(dot)marlowe" <scott(dot)marlowe(at)ihs(dot)com>
Cc: <pgsql-php(at)postgresql(dot)org>
Subject: Re: What is wrong with pg_pconnect() ?
Date: 2003-12-15 22:54:17
Message-ID: IAEMIKOELLIGJPKPFJBOMECLCAAA.jfk@fleming.u-psud.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)postgresql(dot)org
[mailto:pgsql-php-owner(at)postgresql(dot)org]De la part de scott.marlowe
Envoye : lundi 15 decembre 2003 22:55
A : Sylvain Ross
Cc : pgsql-php(at)postgresql(dot)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(at)postgresql(dot)org so that your
message can get through to the mailing list cleanly

In response to

Responses

Browse pgsql-php by date

  From Date Subject
Next Message Rod K 2003-12-15 23:17:45 Re: What is wrong with pg_pconnect() ?
Previous Message scott.marlowe 2003-12-15 21:54:34 Re: What is wrong with pg_pconnect() ?