Re: How to check for server availability? [v9.3.1, Linux]

Поиск
Список
Период
Сортировка
От Vincenzo Romano
Тема Re: How to check for server availability? [v9.3.1, Linux]
Дата
Msg-id CAHjZ2x6bJ4OmwRMQxVfRaFr1fzV-Zut_CaGmvzCuvkJxEAkwdQ@mail.gmail.com
обсуждение исходный текст
Ответ на Re: How to check for server availability? [v9.3.1, Linux]  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: How to check for server availability? [v9.3.1, Linux]  (Chris Angelico <rosuav@gmail.com>)
Список pgsql-general
2012/5/18 Tom Lane <tgl@sss.pgh.pa.us>:
> Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>> I'd need to check from a C language program whether the server is
>> running or not.
>> I was planning to use either "PGPing PQping(const char *conninfo)" or
>> "ConnStatusType PQstatus(const PGconn *conn)".
>> I have my program running and checking from time to time whether the
>> connection is kicking and alive.
>> In order to test the things I've done the following: while the program
>> is waiting for input I simply restart the postgresql server.
>> The issue is thayt both functions return PQPING_OK and CONNECTION_OK
>> respectively.
>> When I forward the request, I get an error: "FATAL:  terminating
>> connection due to administrator command".
>> How can I reliably check the server status?
>
> You are not actually interested in checking the server status; you
> evidently want to know about the health of an existing connection.
> PQping will not help that because it is meant to see if the server
> would accept a new connection.  PQstatus is not tremendously helpful
> either since it doesn't issue any new server traffic; it's just for
> seeing if the operations so far were OK.  I think issuing a new
> dummy query (an empty string would do) is your best bet.  But why
> bother?  Just send your next command, whatever it is.  If you don't
> have another useful command to issue, you're just wasting bandwidth
> and server cycles.

Well, a reason to check the connection health is to understand whether
it neeeds a reconnection or not.
PQping is actually useless: if the database restarted, PQping says
it's OK, but the connection is gone.
You said enough about PQstatus. So issuing a "blank" command seems to
be a good idea. Possibly the only one.

Well, a "ping" function trying to use the current "PGconn*" to ping
the server would make a lot of sense, though.
Thanks a lot, Tom, for your hint.

В списке pgsql-general по дате отправления:

Предыдущее
От: leaf_yxj
Дата:
Сообщение: Re: How to debug the performance issues via which system catalog.Thanks.
Следующее
От: Chris Angelico
Дата:
Сообщение: Re: How to check for server availability? [v9.3.1, Linux]