Приложение Delphi 7 с Firebird 1.5.6 зависает после некоторого времени бездействия в Windows 7 - PullRequest
5 голосов
/ 30 июня 2011

Я разработал приложение Delphi 7, которое использует базу данных Firebird 1.5.6 в клиенте серверная среда.

Приложение работает в Windows 7 32 бит на ноутбуке и база данных работает на Windows XP 32-битный компьютер, который используется в качестве сервера. Проблема в том, что приложение зависает само по себе, когда оно некоторое время не используется. Эта проблема никогда не возникала в Windows XP, только когда мы установили ее в Windows 7.

Все 5 лет работало нормально, но теперь в Windows 7 приложение полностью нестабильно.

Иногда время пробуждения составляет 10-30 секунд с успехом, но иногда никогда с сообщениями «приложение не отвечает» или «приложение падает».

Понятия не имею, где искать или что пытаться найти решение. Я попытался сделать таймер с разрешением 10 секунд, чтобы он был постоянно активен но безуспешно.

Кстати, я работаю в режиме администратора с активным режимом совместимости с XP. Я еще не пробовал виртуальный режим XP, но думаю, что это не решит проблему.

Ответы [ 3 ]

0 голосов
/ 03 августа 2011

У меня была похожая проблема: на некоторых автономных машинах (сервер и клиент Firebird на одном ПК) с 32-битной Windows 7 иногда зависали приложения (Delphi 7).

Все зависания имелито же время (60 секунд).Я попытался изменить firebird.conf и после некоторых тестов нашел параметр DUMMY_PACKET_INTERVAL.

Я установил очень низкое значение, и зависания, похоже, исчезли.
Конечно, есть проблемы с вашим соединением, которое остается открытым.
Управляйте firebird.log и попытайтесь проверить себя.

Удачи.См. эту страницу справки для получения дополнительной информации.

0 голосов
/ 31 июля 2015

Если вы так и не решили, я думаю, это связано с транзакциями. Вы сказали, что соединения были активны все время. Я предполагаю, что вы используете автоматические / автоматические транзакции. Когда вы делаете это, интересующая транзакция никогда не перемещается, потому что транзакция всегда сохраняется (фиксирует и сохраняет).

Когда это происходит, firebird не может очистить мусор, не запустив процесс сборки мусора . Это вызывает две проблемы.

  1. Запросы продолжают замедляться, так как Firebird приходится перелистывать все новые и новые версии данных.

  2. Затем Firebird достигает разницы в количестве транзакций, достигает значения по умолчанию 20000, он выполняет сборку мусора, все сильно замедляя.

Решение состоит в том, чтобы не использовать автоматическую транзакцию. А если количество ваших ежедневных транзакций велико, установите более высокое значение для firebird и выполните сборку мусора самостоятельно в более подходящее время.

0 голосов
/ 11 июля 2011

Может быть, расширение файла базы данных - .gdb, а Windows - это XP, которая создает резервную копию файла, как описано здесь http://www.firebirdfaq.org/faq353/?

...