Как проверить, если сервер PGSQL еще жив с DBD::PG?

Я отчаянно пытаюсь найти простой способ регулярной проверки, если сервер PGSQL все еще жив из сценария Perl. Я намеревался использовать pg_ping для этого, но в моих тестах pg_ping всегда возвращает 1, независимо от состояния сервера БД.

Вот код, с которым я попробовал:

#!/usr/bin/perl
use strict;
use warnings;
use DBD::Pg;

my $dbh=DBI->connect("DBI:Pg:dbname=healthcheck;host=vm0484","healthcheck","areyoustillthere");
for (my $i=1;$i<100;$i++) {
print "$i. pg_ping: ".$dbh->pg_ping."\n";
sleep(1);
}

Я тогда использовал kill -9 в другом окне вручную завершить работу PGSQL-сервера, но результат все равно был 1, Я сделал что-то неправильно?

Если нет, как мне лучше проверить, если сервер БД все еще жив?

Заранее спасибо.

1 ответ

Решение

Вы можете вручную выполнить запрос, как

select 1 as is_alive

как ping() также утверждают, что делают что-то подобное,

Метод ping выдает пустой запрос и проверяет состояние результата.

Другие вопросы по тегам