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 > >