Обсуждение: postmaster restart on a different dataDir
Hi,
I am trying to measure startup time of postmaster. Say I have postmaster running on -D /tmp/d1 and would like to restart it on -D /tmp/d2.
If I just say
time pg_ctl restart -D /tmp/d2
it will not produce an accurate result because pg_ctl will start postmaster in the background and return immediately but if you query the engine right away, you'll see that it is not ready yet as in
time ( pg_ctl restart -D /tmp/d2 ; psql -l )
If I call postmaster, then the command is blocking waiting for postmaster to exit.
I am sure there is a way...but I figured I ask my good friends first...
Thanks
Medi
I am trying to measure startup time of postmaster. Say I have postmaster running on -D /tmp/d1 and would like to restart it on -D /tmp/d2.
If I just say
time pg_ctl restart -D /tmp/d2
it will not produce an accurate result because pg_ctl will start postmaster in the background and return immediately but if you query the engine right away, you'll see that it is not ready yet as in
time ( pg_ctl restart -D /tmp/d2 ; psql -l )
If I call postmaster, then the command is blocking waiting for postmaster to exit.
I am sure there is a way...but I figured I ask my good friends first...
Thanks
Medi
On Mon, Aug 13, 2007 at 04:05:37PM -0700, Medi Montaseri wrote: > Hi, > > I am trying to measure startup time of postmaster. Say I have postmaster Why? > running on -D /tmp/d1 and would like to restart it on -D /tmp/d2. > > If I just say > time pg_ctl restart -D /tmp/d2 > it will not produce an accurate result because pg_ctl will start postmaster > in the background and return immediately but if you query the engine right > away, you'll see that it is not ready yet as in > time ( pg_ctl restart -D /tmp/d2 ; psql -l ) > > If I call postmaster, then the command is blocking waiting for postmaster to > exit. So let it stop, start the timer, then start it again. -- Decibel!, aka Jim Nasby decibel@decibel.org EnterpriseDB http://enterprisedb.com 512.569.9461 (cell)
Вложения
Actually I found the answer....pg_ctl supports a -w switch which waits for the start operation to complete.
Decibel...without -w, pg_ctl will return immediately before postmaster is fully operational. If you don't believe me start the engine and try to connect to it right away with pgsql(1)...
Cheers for now
Medi
Decibel...without -w, pg_ctl will return immediately before postmaster is fully operational. If you don't believe me start the engine and try to connect to it right away with pgsql(1)...
Cheers for now
Medi
On 8/14/07, Decibel! <decibel@decibel.org> wrote:
On Mon, Aug 13, 2007 at 04:05:37PM -0700, Medi Montaseri wrote:
> Hi,
>
> I am trying to measure startup time of postmaster. Say I have postmaster
Why?
> running on -D /tmp/d1 and would like to restart it on -D /tmp/d2.
>
> If I just say
> time pg_ctl restart -D /tmp/d2
> it will not produce an accurate result because pg_ctl will start postmaster
> in the background and return immediately but if you query the engine right
> away, you'll see that it is not ready yet as in
> time ( pg_ctl restart -D /tmp/d2 ; psql -l )
>
> If I call postmaster, then the command is blocking waiting for postmaster to
> exit.
So let it stop, start the timer, then start it again.
--
Decibel!, aka Jim Nasby decibel@decibel.org
EnterpriseDB http://enterprisedb.com 512.569.9461 (cell)