Re: need a method to ping a running database

From: Steve Crawford <scrawford(at)pinpointresearch(dot)com>
To: Dima Tkach <dmitry(at)openratings(dot)com>, Travis Hume <travis(dot)hume(at)tenzing(dot)com>
Cc: pgsql-general(at)postgresql(dot)org, Breck Thomas <Breck(dot)Thomas(at)tenzing(dot)com>
Subject: Re: need a method to ping a running database
Date: 2003-06-12 17:18:27
Message-ID: 200306121018.27880.scrawford@pinpointresearch.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

So try:
`psql -d database -h server -c "select 'It is running'" 2>/dev/null | grep -c
"It is running"`

Though I don't think the "ERROR: database is staring up" is an incorrect error
as it still means that the database is not ready to handle queries. Still, I
think it's safer to look for the existence of expected results that the
absence of specific error messages.

Cheers,
Steve

On Wednesday 11 June 2003 6:42 pm, Dima Tkach wrote:
> What about
>
> down= \
> `psql -d database -h server -c 'select 1;' 2>&1 | grep -c '^ERROR'`
>
> ?
>
> Dima.
>
> P.S. One thing to be cautious about is that if it has just been started,
> you'll get something like 'ERROR: The database is starting up.', that
> will get counted as an error (probably incorrectly)... So, the real
> implementation has to be a little more elaborate then that to be able to
> catch and handle that situation...
>
> Travis Hume wrote:
> > I need a shell scriptable method to determine if a postgresql database
> > is running and accepting connections.
> >
> > I've written a script to start out postgresql database and I was using:
> > "pg_ctl status"
> >
> > to determine if the database had been started. There are a couple of
> > problems with this method. It seems that if you start postgresql and
> > then issue a "kill -9" on the postmaster processes a .pid file is left
> > behind (understandable), but then if you run "pg_ctl status" it will
> > immediately report that the database is running and give you the pid
> > number and whatever else. This is a bit misleading to say the least.
> > To solve this problem I changed my db_ping() function to be more like
> > "ps ax |grep -q postmaster && pg_ctl status". This works better, but
> > there is still a problem.
> >
> > The .pid file is being written immediately, not when the database is
> > actually up and accepting connections. This causes my java app to try
> > and open the database and setup a connection pool before it should.
> >
> > I need a shell scriptable method to determine if the database is started
> > and ready to accept connections.
> >
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 1: subscribe and unsubscribe commands go to majordomo(at)postgresql(dot)org
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/docs/faqs/FAQ.html

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Dmitry Tkach 2003-06-12 17:29:19 Re: need a method to ping a running database
Previous Message Erik Price 2003-06-12 17:14:59 LAST_INSERT_ID equivalent