Skip site navigation (1) Skip section navigation (2)

Re: How to shoot yourself in the foot: kill -9 postmaster

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Lamar Owen <lamar(dot)owen(at)wgcr(dot)org>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: How to shoot yourself in the foot: kill -9 postmaster
Date: 2001-03-06 02:57:56
Message-ID: 200103060257.VAA21107@candle.pha.pa.us (view raw or flat)
Thread:
Lists: pgsql-hackers
> Ok, since I can't seem to count on killproc's exact behavior, istm that
> I can:
> killproc postmaster -INT
> wait some number of seconds
> if postmaster still up
>    killproc postmaster -TERM
> wait some number of seconds
> if postmaster STILL up
>    killproc postmaster  #and let the grim reaper do its dirty work.
> 
> After all, the system shutdown is relying on this script to properly and
> thoroughly shut things down, or it WILL do the 'kill -9
> pid-of-postmaster' for you.
> 
> Now, what's a good delay here?  Or is there a better metric that a
> simple delay?  After all, I want to avoid the kill -9 unless we have an
> emergency hard lock situation -- what's a good indicator of the backend
> fleet of processes actually _doing_ something?  Or should I key on an
> indicator of processor speed (Linux does provide a nice bogus metric
> known as BogoMIPS for such a purpose)?  The last thing I want to do is
> wait too long on some platforms and not long enough on others.

In remembering how other databases handle it, I think you should use
pg_ctl to shut it down.  You need to enable wait mode, not sure if that
is the default or not.  That will wait for it to shut down before
continuing.  I realize a hung shutdown would stop the kernel from
shutting down.  You could put a sleep 100 in there and call a trap on a
timeout.

Here is some shell code:

	TIME=60	
	pg_ctl -w stop &
	BG="$!"; export BG

	(sleep "$TIME"; kill "$BG" ) &
	BG2="$!"; export BG2

	wait "$BG"
	if ! kill -0 "$BG2"
	else    kill "$BG2"
	fi


This will try a pg_ctl shutdown for 60 seconds, then kill pg_ctl.  You
would then need a kill of you own.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman(at)candle(dot)pha(dot)pa(dot)us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

In response to

Responses

pgsql-hackers by date

Next:From: Bruce MomjianDate: 2001-03-06 03:00:27
Subject: mailing list messages
Previous:From: Lamar OwenDate: 2001-03-06 02:55:11
Subject: Re: How to shoot yourself in the foot: kill -9 postmaster

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group