Re: MacOS X Shared Buffers (SHMMAX)?
Nigel J. Andrews <nandrews@investsystems.co.uk>
From: "Nigel J. Andrews" <nandrews@investsystems.co.uk>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: "Command Prompt, Inc." <pgsql-general@commandprompt.com>, Steve Lane <slane@fmpro.com>, jlx@commandprompt.com, pgsql-general@postgresql.org
Date: 2002-05-23T14:09:53Z
Lists: pgsql-general, pgsql-sql
On Wed, 22 May 2002, Tom Lane wrote: > "Command Prompt, Inc." <pgsql-general@commandprompt.com> writes: > > I was able to pull down the source for the Kernel, and increased the > > SHMMAX by a factor of 16. Upgraded to the new Kernel and I am now able to > > get safely 512 connections, even up around 900, but bumping it up to 1024, > > I run into the following error: > > > PGSTATBUFF: recvfrom(2): Resource temporarily unavailable > > DEBUG: statistics collector process (pid 1988) exited with exit code 1 > > > ...which then repeats itself infinitely until the calling process is > > stopped. ;) > > [ scratches head... ] "Resource temporarily unavailable" is EAGAIN > according to /usr/include/sys/errno.h on my OSX machine. But the man > page for recvfrom doesn't mention any plausible reasons for EAGAIN to > be signaled. select() just told us there was data available on the > socket, so WTF? Could this be a kernel bug? > > You could try modifying pgstat.c to continue its loop rather than > exiting after it gets a recvfrom error. But if the error condition > recurs that'll just put pgstat.c into an infinite loop, so I'm not > sure this is any solution --- just a way of gathering more data. My 'standard' way of doing this is to loop while the error is EAGAIN but with a small retry counter to limit the number of attempts made. Hopefully the second time through the call isn't interrupted again. Therefore I'm usually quite happy saying that after something like 5 calls to a routine then there really is an error. Isn't this how people normally handle this? -- Nigel J. Andrews Director --- Logictree Systems Limited Computer Consultants