Причины возникновения обрывов связи
Стабильность работы Shelter зависит от надежности сетевого соединения, помимо прочих факторов. Обрыв сетевого соединения не является неполадкой Shelter, но, тем не менее, влечет за собой значительные последствия. 
Причинами обрыва могут служить:
- Физический разрыв соединения, возникший в результате потери контакта (разъединения, окисления и т.д.) в местах соединения проводов и аппаратуры.
- Потеря работоспособности сетевых аппаратов из-за перегрева, потери целостности, удаления на большое расстояние (Wi-Fi).
- Скачки сетевого напряжения.
 
Следствие обрыва связи
• Любая транзакция (на изменение данных) состоит из нескольких этапов:
  • старт транзакции
  • изменение данных
  • подтверждение (либо отмена) транзакции
  • завершение транзакции
• Если после изменения данных, но до подтверждения (отмены) транзакции произойдет обрыв соединения, то Firebird (из-за специфичной реализации протокола TCP-IP) не получит уведомления об обрыве соединения и транзакция останется "висеть". Повторная попытка
изменения данных приведет к зависанию транзакции, а как следствия и зависание ПО.
• После возникновения блокировки работать в Shelter до устранения ее причины невозможно. Если времени на анализ ситуации нет и требуется скорейшее продолжение работы поможет перезапуск службы Firebird. Но, если не устранить причину, ситуация будет периодически возникать снова.
 
Автоматический сброс "зависших" транзакций
Операционная система сама занимается обнаружением разорванных TCP-соединений, но значения по умолчанию слишком велики. Сам механизм называется KeepAlive и за его работу отвечают следующие параметры:
 
KeepAliveTime — интервал времени с момента отправки последнего пакета, по истечении которого соединение помечается как требующее проверки. Задается в миллисекундах, по умолчанию равен 2 часам. Рекомендуется изменить на 5 минут (300000).
KeepAliveInterval — интервал между проверочными пакетами (отправка которых начинается по истечении параметра KeepAliveTime). Задается в миллисекундах, по умолчанию равен 1 секунде. Этого достаточно, менять не нужно.
Оба этих параметра можно отредактировать в реестре по адресу:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Нужно создать параметр с нужным именем типа DWORD и установить ему десятичное значение, затем перезагрузить сервер. При истечении указанного промежутка времени система сама будет "убивать" зависшие пакеты. Т.е. если на практике возникла взаимная блокировка из-за "зависшей" транзакции, то в течении указанного времени транзакция отменится автоматически.
Этот метод НЕ является приоритетным, т.к. проблему обрывов связи он НЕ решает. Но, как вариант, позволяет Shelter работать в более-менее штатном режиме. В идеале нужно найти источник обрывов связи и исправить.
 
Поиск зависших транзакций
Shelter обладает встроенными средствами для просмотра текущих транзакций. Находится оно в окне глобального обновления, во вкладке мониторинг транзакций.
Если найден конкретный компьютер, с которого возникают зависшие транзакции и решить проблему не удается, рекомендуется перенести рабочее место на удаленный рабочий стол прямо на сервер с БД.
 
Источники информации