Вы можете увидеть комбинацию программных компонентов, которые я использую в заголовке вопроса.
У меня есть простая база данных из 10 таблиц, работающая на сервере Postgres (Win 7 Pro).У меня есть клиентские приложения (python использует psycopg для подключения к Postgres), которые подключаются к базе данных через произвольные промежутки времени для проведения относительно легких транзакций.Есть только одно клиентское приложение за раз, которое выполняет какую-либо тяжелую транзакцию, и обычно это <500 мс.Остальные тратят больше времени на подключение, чем фактически ожидают, пока база данных выполнит транзакцию.Дело в том, что база данных находится под небольшой нагрузкой, но нагрузка равномерно распределяется между операциями чтения и записи. </p>
Мои клиентские приложения работают как сами серверы / службы.Я обнаружил, что довольно часто я могу (1) полностью отключить сервер Postgres и (2) разрушить базу данных, убив клиентское приложение с помощью прерывания клавиатуры.
By (1) я имею в виду, что процесс Postgres на сервере прерывается, и служба должна быть перезапущена.
По (2) я имею в виду, что база данных снова падает, когда клиент пытается получить доступ к базе данных после того, как онперезапустил и (предположительно) завершил операции «режима восстановления».Мне нужно удалить старую базу данных / схему с сервера базы данных, а затем перестраивать ее каждый раз, чтобы вернуть ее в стабильное состояние.(После режима восстановления я попробовал различные комбинации Vacuums, чтобы посмотреть, улучшает ли это стабильность; пылесосы работают, но сервер все равно быстро отключится, когда клиенты снова попытаются получить доступ к базе данных.)
Не знаюВспомните, что я видел тот же эффект, когда я убивал клиентское приложение с помощью «taskkill» - только при использовании прерывания клавиатуры для остановки процесса python.Это происходит не всегда, но достаточно часто, что вызывает серьезную озабоченность (25%?).
Действительно удивлен, что что-нибудь на клиенте действительно сможет снятьбаза данных "корпоративного класса".Может кто-нибудь поделиться советами о том, как улучшить надежность, и, надеюсь, помочь мне понять, почему это происходит в первую очередь?Спасибо, М