Обсуждение: Re: [Pgbuildfarm-members] guppie: 64MB RAM too small?

Поиск
Список
Период
Сортировка

Re: [Pgbuildfarm-members] guppie: 64MB RAM too small?

От
"Jim C. Nasby"
Дата:
Adding -hackers.

On Tue, Mar 21, 2006 at 02:20:09PM +0100, Christian Mair wrote:
> 
> > No, let's start again.
> > 
> > The user's machine ran out of resources. That can't be because inbitdb set
> > max_connections too low - if anything it has probably set them too high. I
> > suggested that he could possibly limit resource use by limiting the number
> > of concurrent connections "make check" would use, by using the *UNRELATED*
> > MAX_CONNECTIONS=n make flag. This flag is not part of buildfarm - it
> > predates buildfarm in fact. It's part of the postgres build system - look in
> > pg_regress.sh and the associated make file. Buildfarm has support for it as
> > shown in the sample config file.
> 
> Yes,
> Neither PostgreSQL nor the buildfarm code is to blame.
> The problem was OpenBSD's restrictive default limit of max 64
> user processes. I raised that on OpenBSD's side and as you can see
> guppie turned green :)

Ok, lets go back to my original point then: initdb should be made to
check that you can actually open as many connections as it's trying to
set max_connections to. If it can't, it should drop max_connections down
(and possibly add a note to postgresql.conf indicating that it did so).
-- 
Jim C. Nasby, Sr. Engineering Consultant      jnasby@pervasive.com
Pervasive Software      http://pervasive.com    work: 512-231-6117
vcard: http://jim.nasby.net/pervasive.vcf       cell: 512-569-9461


Re: [Pgbuildfarm-members] guppie: 64MB RAM too small?

От
Andrew Dunstan
Дата:
Jim C. Nasby wrote:

>Adding -hackers.
>  
>
[removing -buildfarm :-) ]

>Ok, lets go back to my original point then: initdb should be made to
>check that you can actually open as many connections as it's trying to
>set max_connections to. If it can't, it should drop max_connections down
>(and possibly add a note to postgresql.conf indicating that it did so).
>  
>

At the time it sets max_connections there is no server to test against. 
initdb in fact never uses a standard client connection at all, and never 
starts postmaster. To do a check on max_connections you would have to 
start postmaster and then try to start that many client connections. 
That's a lot of extra lifting to put into initdb for what is arguably at 
worst a rare problem.

cheers

andrew


Re: [Pgbuildfarm-members] guppie: 64MB RAM too small?

От
Tom Lane
Дата:
"Jim C. Nasby" <jnasby@pervasive.com> writes:
> Ok, lets go back to my original point then: initdb should be made to
> check that you can actually open as many connections as it's trying to
> set max_connections to.

Apparently you are unaware that it's done that for a long time.
        regards, tom lane


Re: [Pgbuildfarm-members] guppie: 64MB RAM too small?

От
Tom Lane
Дата:
Andrew Dunstan <andrew@dunslane.net> writes:
> At the time it sets max_connections there is no server to test against. 
> initdb in fact never uses a standard client connection at all, and never 
> starts postmaster. To do a check on max_connections you would have to 
> start postmaster and then try to start that many client connections. 

max_connections *is* checked by initdb ... although only to the extent
of verifying we can make that many semaphores.

The parallel regression tests are not a particularly great reference
point for this anyway, because for each parallel test case you have not
only a server process, but a psql process, and in most shells a parent
shell process for the psql, ie 3x the nominal level of parallelism,
all running under the postgres userid.  This isn't the normal usage
scenario, so it would not be reasonable to restrict max_connections to
1/3 the number of user processes per userid.
        regards, tom lane


Re: [Pgbuildfarm-members] guppie: 64MB RAM too small?

От
"Jim C. Nasby"
Дата:
On Tue, Mar 21, 2006 at 09:59:40AM -0500, Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
> > At the time it sets max_connections there is no server to test against. 
> > initdb in fact never uses a standard client connection at all, and never 
> > starts postmaster. To do a check on max_connections you would have to 
> > start postmaster and then try to start that many client connections. 
> 
> max_connections *is* checked by initdb ... although only to the extent
> of verifying we can make that many semaphores.

Ok, I thought there was at least some kind of check in there. Maybe it
should try and determine how many processes the postmaster user is
allowed as well; presumably something like ulimit would show this.

> The parallel regression tests are not a particularly great reference
> point for this anyway, because for each parallel test case you have not
> only a server process, but a psql process, and in most shells a parent
> shell process for the psql, ie 3x the nominal level of parallelism,
> all running under the postgres userid.  This isn't the normal usage
> scenario, so it would not be reasonable to restrict max_connections to
> 1/3 the number of user processes per userid.

Certainly; it doesn't make sense to be mucking around just for the sake
of make check.
-- 
Jim C. Nasby, Sr. Engineering Consultant      jnasby@pervasive.com
Pervasive Software      http://pervasive.com    work: 512-231-6117
vcard: http://jim.nasby.net/pervasive.vcf       cell: 512-569-9461