Gallemar |
---|
как программно проверить доступность и абстрактной базы данных на win-сервере ping сервера - доступен по сети connect к бд - доступна база select таблицы - доступна таблица состояние службы сервера - запущена или нет. Что пропустил? |
1) Непонятен алгоритм принятия решения. Что будет если pinga нет?
Будем делать переход на шаг номер 2 и проверять коннект или останемся
в статусе аварии? Я встречал конфигурации где ICMP закрыт но сокеты
и порт БД вполне себе работоспособен.
2) Connect к БД. Это нужно мониторить но с умом. У нас был случай, когда
система мониторинга DDOS-ила БД или переполняла max_sessions. Вобщем
аккуратно. Если предыдущий поток с сокетом мониторинга подвисли - то
ни запускать новый поток пока старый гарантийно не закроет сокет.
3) select таблицы - Здесь ОК. Но я-бы добавил что это редкая диагностика.
Ее можно проверять 1 раз при старте апп-сервера. По сути это валидация
схемы. Тоесть валидны ли бизнес SQL объекты перед началом работы приложения.
4) состояние службы? Тут неяно. Что за служба имеется в виду? И как в пункте (1)
как принимать решение? Возможно (если это Windows) то службу все таки
свалить на сисадмина и озадачить его соотв. настройками перезапуска в случае
отказа и т.п.