On Mon, Nov 29, 2010 at 10:03 PM, Ben Chobot <bench@xxxxxxxxxxxxxxx> wrote:
On Nov 29, 2010, at 12:57 PM, Vick Khera wrote:We're having similar issues on 8.4.[245]... occasionally psql takes anywhere from a few to several dozen seconds to connect. I've been unsuccessfully trying to blame spikes in the OS run queue (we desperately need some connection pooling) but if it's something to do with locks I can't see in pg_locks, that would explain why I haven't been able to figure out what's going on yet....
> On Mon, Nov 29, 2010 at 1:23 PM, Tom Lane <tgl@xxxxxxxxxxxxx> wrote:
>> hubert depesz lubaczewski <depesz@xxxxxxxxxx> writes:
>>> straced postmaster when the problem was happening, and I was opening new
>>> connections. strace looks like this:
>>> [ backend hangs on semop immediately after reading global/pg_database ]
>>
>> It looks like something had exclusive lock on the database that new
>> connections wanted to connect to. ÂAFAICS the only action in 8.3 that
>> would do that would be a DROP DATABASE or RENAME DATABASE. ÂWhat was
>> that other session doing?
>
> Every once in a while when I connect to my big DB it feels like it
> stalls the connection for a few seconds. ÂI have no idea what causes
> it, but it does feel like it has to do with the load. ÂThe load is not
> all that high relative to what my box can handle. ÂIt doesn't happen
> often enough for me to track it down, though. ÂIt instinct is that it
> is waiting on a lock, but clearly there is no rename/drop happening on
> my main db else i'd be out of business :-) ÂI too run 8.3 as primary
> right now... testing 9.0 for deployment soon-ish.
--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general
This is normal. PostgreSQL needs to create new server process to handle your requested connection.Â
Then it needs to allocate resources to that new connection. It initializes shared memory for that connection. That is the stall you are mentioning.Â
If you are time sensitive on connection times, then use connection pooling software like pg-bouncer or pg-pool2. Pooling will keep your server instance "hot" and those lags won't happen.