|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Коллеги, помогите советом куда копать... Ubuntu + Firebird 3.0.2, хостится на RuVDS. Клиентов штук 10-15 в нескольких территориально удаленных офисах. Клиентское приложение на Delphi, fbclient.dll тоже 3.0.2. Везде работает всё более-менее стабильно, кроме одного офиса, в котором интернет через сотового оператора. Там периодически (иной раз аж каждые 5 минут) возникает ошибка IBErrorCode = 335544727 "Error writing data to the connection", либо IBErrorCode = 335544726 "Error reading data from the connection". При этом в других приложениях проблем с интернетом не наблюдается (браузеры, почта и т.п. - работают нормально), в этот момент даже можно работать на компе удаленно через TeamViewer. Со слов пользователей "пинги до сервера БД идут, пакеты не теряются" (но не знаю как и чем они это проверяли). Включил сжатие трафика в Firebird (как вот тут написано). Надеялся, что если меньше трафик - реже ошибка. Но буквально в течение 10 минут её словили. Может кто с подобным сталкивался? Где копать? Ковырять сетевые настройки Убунты? Настройки фаерберда на сервере? Сетевые настройки винды на клиенте? Или же в программе искать косяк? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 21:38 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
developer0118Может кто с подобным сталкивался? Где копать? Ковырять сетевые настройки Убунты? Настройки фаерберда на сервере? Сетевые настройки винды на клиенте? Или же в программе искать косяк? ответ вот тут, в вашем же сообщении " Везде работает всё более-менее стабильно, кроме одного офиса, в котором интернет через сотового оператора. " какой тогда может быть "косяк в программе", "настройки ФБ на сервере", "сетевые настройки убунты"? если сотовый оператор рвет соединения, чем вы это "настроите", интересно? Впрочем, теоретически может помочь, если в программе 1 раз в минуту "тыкать" в сервер каким-нибудь примитивным запросом, типа select * from rdb$database. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 21:57 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
kdvесли сотовый оператор рвет соединения, чем вы это "настроите", интересно? Почему тогда у других программ нет проблем с интернетом? И потом, соединение-то не рвется. В программе реализовано логгирование ошибок в БД. Так вот, некоторая часть этих ошибок (имею в виду упомянутые Error writing data to the connection) успешно записываются в БД. Стало быть коннект не оборвался, сервер не требует повторной авторизации и т.п. kdvВпрочем, теоретически может помочь, если в программе 1 раз в минуту "тыкать" в сервер каким-нибудь примитивным запросом, типа select * from rdb$database. Да тыкали уже, правда для других целей. Бестолку. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 22:22 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
developer0118Там периодически (иной раз аж каждые 5 минут) возникает ошибка IBErrorCode = 335544727 "Error writing data to the connection", либо IBErrorCode = 335544726 "Error reading data from the connection". При этом в других приложениях проблем с интернетом не наблюдаетсяЯ такие проблемы наблюдаю в локалке. Раз в 30-40 минут. В локалке, но не на локалхост. В локалке, где раньше с 2.1. проблем не было. Не писал пока об этой проблеме - не уверен был, что из-за ФБ. Но блин именно на 3.0.2. и у меня проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 22:26 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
kdvВпрочем, теоретически может помочь, если в программе 1 раз в минуту "тыкать" в сервер каким-нибудь примитивным запросом, типа select * from rdb$database.Это не поможет. Поможет только следствие проблемы поймать. У меня кое где раз в 5 секунд делается подобное. Только не select, а CommitRetaining у readonly-транзакции. Для удостоверения, что коннект не пропал. Так вот, именно эта же ошибка именно на этом CommitRetain и стала на 3.0.2 появляться в локалке, где раньше годами на 2.1 работал без проблем этот механизм. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 22:30 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
YuRock, это проблемы с разрывом соединением, а CommitRetaining здесь вообще не причём. У меня подозрения что некоторые программы переживают кратковременное отсутствие соединения гораздо лучше чем Firebird, и возможно даже восстанавливают его. Поэтому в TeamViewer это не заметно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 22:43 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
developer0118...Почему тогда у других программ нет проблем с интернетом?...Программы такие потому что. Для клиентской части клиент-серверного приложения обрыв соединения фатален, если только это самое приложение не написано специально с учетом возможности обрыва. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 23:05 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
developer0118И потом, соединение-то не рвется. В программе реализовано логгирование ошибок в БД. Так вот, некоторая часть этих ошибок (имею в виду упомянутые Error writing data to the connection) успешно записываются в БД. Стало быть коннект не оборвался, сервер не требует повторной авторизации и т.п. Не факт. Соединение может автоматически восстанавливаться приложением. Проконсультируйтесь у его автора. Кстати, а в firebird.log что об этих ошибках написано? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 23:15 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Симонов Денисэто проблемы с разрывом соединением, а CommitRetaining здесь вообще не причёмЭто понятно, я об этом и говорю. Просто CommitRetaining я вызываю очень часто именно для того, чтобы этот разрыв соединения поймать. И ловлю. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 23:17 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovКстати, а в firebird.log что об этих ошибках написано?Я лично еще не готов нормальный отчет об этой проблеме воспроизвести, но собираюсь сделать это. Сейчас так, в тему просто написал. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 23:19 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
developer0118Почему тогда у других программ нет проблем с интернетом?Потому что они не поддерживают постоянное соединение. RTFM: statefull connection, stateless connection ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 23:59 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСоединение может автоматически восстанавливаться приложением. Проконсультируйтесь у его автора. Я его автор, правда не первый :) Автоматического восстановления коннекта в программе нет. Более того, в случае "нормального" разрыва соединения пользователю выдается страшное сообщение, мол, всё пропало, ваши данные возможно в БД не попали, переподключитесь и проверьте. И программа закрывается. Но в данном случае разрыва как такового не происходит, pFIBDatabase.Connected = True, да и сервер при следующих запросах не требует авторизации, то есть тоже не считает что клиент отвалился. Dimitry SibiryakovКстати, а в firebird.log что об этих ошибках написано? Ничего не нашел, но возможно плохо смотрел. Гляну ещё разок повнимательнее... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 09:12 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
developer0118Но в данном случае разрыва как такового не происходит, pFIBDatabase.Connected = True, да и сервер при следующих запросах не требует авторизации, то есть тоже не считает что клиент отвалился.Тогда в чём проблема ? Полный статус-вектор с ошибкой есть ? Там всегда есть имя операции, которая дала ошибку ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 09:31 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
hvladТогда в чём проблема ? Полный статус-вектор с ошибкой есть ? Там всегда есть имя операции, которая дала ошибку Проблема в том, что в одном офисе операции не дают ошибку, а в другом - дают. Даже если я точно определю какая конкретно операция не выполнилась (какой Query с каким SQL) - что мне это даст? Ведь минутой раньше или минутой позже этот же SQL нормально выполняется. А в других офисах, повторюсь, вообще не возникает подобной ошибки. Всё что у меня есть: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 10:00 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
developer0118Проблема в том, что в одном офисе операции не дают ошибку, а в другом - дают.Ещё раз, медленно: если коннект не рвётся - в чём проблема ? Научить обрабатывать ошибки ? developer0118Даже если я точно определю какая конкретно операция не выполнилась (какой Query с каким SQL) - что мне это даст?Речь идёт о том вызове API (winsock, в данном случае), который завершился с ошибкой. И о самой ошибке - она тоже есть в статус-векторе. Это может помочь нам определить как с этим бороться. developer0118Всё что у меня естьЭто полный статус-вектор ? Если в нём только isc_net_read_err и больше ничего нет, то это обычно значит что сокет уже закрыт. Т.е. реальная ошибка была раньше. Что в firebird.log на стороне клиента ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 10:23 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
developer0118Почему тогда у других программ нет проблем с интернетом? у каких у других? Какие из них держат постоянно открытое соединение с сервером? "Браузер и почта" к таким программам не относятся, совсем. А Teamviewer - так он постоянно что-то передает, у него соединение и не рвется. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 10:30 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Такое не пробовал? DummyPacketInterval = 30 в firebird.conf ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 11:56 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Я во избежание такого принудительного обрыва делал в своих приложениях на читающей транзакции запрос SELECT 1 FROM RDB$DATABASE по таймеру раз в 65500 милисекунд. Если запрос выполнялся с ошибкой - значит, с базой или с коннектом есть какие-то проблемы, и можно не продолжать долбиться к серверу. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 11:59 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
hvladЧто в firebird.log на стороне клиента ? Только вот такая строка: Код: sql 1.
Причем этих записей значительно меньше, нежели возникающих ошибок. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 12:29 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
rstrelbaТакое не пробовал? DummyPacketInterval = 30 в firebird.conf Неа, страшно Код: sql 1. 2. 3. 4.
Шевелил tcp_keepalive_*, но не помогло. Либо мало шевелил... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 12:46 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
developer0118Или же в программе искать косяк?Не то чтобы косяк, но менять надо подход: с коннект-вся_работа-дисконнект на пока_работа(коннект_пачка_операторов-дисконнект) Хотя те же фибы к такому подходу прямо скажем не расположены. В качестве полумеры поставить на той же площадке терминальный сервер и работать через него. Это быстрый и самый простой в реализации вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 13:15 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
developer0118Только вот такая строка: Код: sql 1.
Не думаю, что от 127.0.0.1 к серверу лежит сотовая связь PS что за манера отвечать не на все поставленные вопросы ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 13:31 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
У меня такое впечатление, что приложение работает одновременно с двумя БД и соединение рвётся только с одной. Причём локальной. И рвёт его антивирус. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 13:36 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovУ меня такое впечатление, что приложение работает одновременно с двумя БД и соединение рвётся только с одной. Причём локальной. И рвёт его антивирус. Программа работает либо с удаленной БД, либо с локальной. С какой работать - выбирает пользователь при запуске программы. Про антивирус спасибо за наводку, проверю. hvladНе думаю, что от 127.0.0.1 к серверу лежит сотовая связь Да-да, это я уже туплю, взял видимо не тот firebird.log. Но других firebird.log не нашел на компе. hvladЭто полный статус-вектор ? Если в нём только isc_net_read_err и больше ничего нет, то это обычно значит что сокет уже закрыт. Т.е. реальная ошибка была раньше. PS что за манера отвечать не на все поставленные вопросы ? Видимо не правильно понимаю термин "статус-вектор", сходу гугл тоже не помог. Что и где надо ещё посмотреть? Или что и где почитать? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 14:09 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Как именно осуществлено интернет подключение через провайдера сотовой связи? Стоит роутер с USB 3g/4g модемом? На USB модеме используется внутренняя антенна или же через AUX - репитер/усилитель + направленная антенна? Что за USB модем? Прошивка модема свежая? Настройки MTU на интерфейсе 3g/4g? Флажок "nailed-up" имеется и активирован? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 14:51 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
developer0118, VPN поставь и ходи через него. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 15:52 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
MikeDDdeveloper0118, VPN поставь и ходи через него.Забавно, как надстройка над нестабильным каналом добавит стабильности? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 17:13 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyMikeDDdeveloper0118, VPN поставь и ходи через него.Забавно, как надстройка над нестабильным каналом добавит стабильности?Лишь устранит возможность ошибок передачи пакета, неотлавливаемых через CRC. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 10:19 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
rdb_devIvan_Pisarevskyпропущено... Забавно, как надстройка над нестабильным каналом добавит стабильности?Лишь устранит возможность ошибок передачи пакета, неотлавливаемых через CRC. Чисто по субъективным ощущениям по VPN стабильность канала лучше на 3G/4G модемах. Опсосы могут на ходу менять внешний IP и тут VPN здорово выручает. Да и вообще выставлять наружу сервер FB мягко говоря плохо по соображениям безопасности. ТСу советую глянуть на SoftEher VPN. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 12:07 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
developer0118hvladЭто полный статус-вектор ? Если в нём только isc_net_read_err и больше ничего нет, то это обычно значит что сокет уже закрыт. Т.е. реальная ошибка была раньше. PS что за манера отвечать не на все поставленные вопросы ? Видимо не правильно понимаю термин "статус-вектор", сходу гугл тоже не помог. Что и где надо ещё посмотреть? Или что и где почитать?Про статус-вектор (status-vector) можно почитать как в IB API Guide, так и в исходниках FIB+. Впрочем, судя по всему, FIB+ полностью интерпретирует все эл-ты из статуса. Я всё же хотел бы узнать - если коннект не рвётся, то где проблема ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 13:10 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
rdb_devКак именно осуществлено интернет подключение через провайдера сотовой связи? Стоит роутер с USB 3g/4g модемом? На USB модеме используется внутренняя антенна или же через AUX - репитер/усилитель + направленная антенна? Что за USB модем? Прошивка модема свежая? Настройки MTU на интерфейсе 3g/4g? Флажок "nailed-up" имеется и активирован? У меня нет этой информации, проблемный комп находится территориально в другом городе от меня, я имею на него доступ только удаленно и изредка... Если у вас есть (могут появиться) советы/предположения, зависящие от спрашиваемых параметров - я постараюсь их выяснить. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 13:21 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
developer0118У меня нет этой информации, проблемный комп находится территориально в другом городе от меня, я имею на него доступ только удаленно и изредка... Если у вас есть (могут появиться) советы/предположения, зависящие от спрашиваемых параметров - я постараюсь их выяснить.Советы легко выводятся из вопросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 13:24 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
hvladЯ всё же хотел бы узнать - если коннект не рвётся, то где проблема ? Ну проблема в том, что программа не работает :) Уже предчувствую кучу мнений на тему "надо правильно писать программы!", "не умеешь обрабатывать исключения!" и т.п. В программе худо-бедно анализируются и обрабатываются исключения. Написан обработчик Application.OnException, в нём в зависимости от разных параметров информация может либо логгироваться в БД, либо в файл; по каждому исключению собирается максимально полная информация для логгирования; пользователю по-возможности выдается максимально понятное ему сообщение на русском языке и т.д., и т.п. Такой подход полностью устраивал на протяжении 10+ лет, в том числе в проектах 24/7 с несколькими сотнями пользователей и т.п. И вот в одной довольно мелкой программке, с которой работает всего-то десяток человек, сервер которой хостится на минимальных (потому что самых дешевых) ресурсах RuVDS - возникла такая вот беда. Причем только в одном из нескольких офисов. Поэтому как-то логика подсказывает в первую очередь попытаться найти проблему в окружении, а не внутри программы... Конечно наверно можно засунуть каждый вызов pFIBDataSet.Open в блок try-except с подробнейшим анализом исключений и с попыткой выполнить запрос ещё раз (или два? три? десять?), но мне кажется что это совсем уж по-джедайски... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 13:39 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
16.01.2018 13:39, developer0118 пишет: > Конечно наверно можно засунуть каждый вызов pFIBDataSet.Open в блок try-except с подробнейшим анализом исключений > и с попыткой выполнить запрос ещё раз (или два? три? десять?), но мне кажется что это совсем уж по-джедайски... но… зачем же?! это ж ведь очень и очень! да! да! но нет! © если я всё правильно путаю, у плюсов есть ЦЕНТРАЛИЗОВАННЫЙ обработчик ошибок. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 13:48 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Мимопроходящийесли я всё правильно путаю, у плюсов есть ЦЕНТРАЛИЗОВАННЫЙ обработчик ошибок. А если я правильно путаю, у них же есть опция автоматического восстановления оборванного соединения, которая, скорее всего, у аффтара и включена. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 13:54 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
16.01.2018 13:54, Dimitry Sibiryakov пишет: > у них же есть опция автоматического восстановления оборванного > соединения, которая, скорее всего, у аффтара и включена. "Как принять? Стоя? Сидя? Лёжа!" © упаси Господи от такого неестественного интеллекта... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 14:03 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
developer0118И вот в одной довольно мелкой программке, с которой работает всего-то десяток человек, сервер которой хостится на минимальных (потому что самых дешевых) ресурсах RuVDS - возникла такая вот беда. Причем только в одном из нескольких офисов. Поэтому как-то логика подсказывает в первую очередь попытаться найти проблему в окружении, а не внутри программы...Всё правильно. И приз выиграла сотовая связь. Не так ли ? :) PS можно долго пинать друг друга, но без доп инф-ции (которую не получить без доп телодвижений) я, со своей стороны, сделать ничего не могу ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 16:00 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovА если я правильно путаю, у них же есть опция автоматического восстановления оборванного соединения, которая, скорее всего, у аффтара и включена. pFIBDataBase.AutoReconnect = False pFIBDataBase.Timeout = 0 pFIBDataBase.WaitForRestoreConnect = 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 16:02 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
developer0118, выдержка из FIBPlus Developer's Guide: Обработка потери соединения FIBPlus предоставляет своим пользователям уникальную возможность обработки потери соединения. Для обработки потери соединения используется сам компонент TpFIBDatabase и компонент централизованной обработки всех ошибок библиотеки TpFIBErrorHandler. Пример использования этой функциональности представлен в примере ConnectionLost. Коротко опишем, как он устроен. Компонент TpFIBDatabase реализует три специальных события: AfterRestoreConnect – возникает при успешном восстановлении соединения. OnLostConnect – возникает при потере соединения. Событие возникает в момент очередного обращения к БД, которое завершается ошибкой. Здесь вы можете задать одно из трех возможных действий, которые можно предпринять в этой ситуации (смотрите описание TOnLostConnectActions) - закрыть приложение, закрыть соединение, проигнорировать, попытаться восстановить соединение. OnErrorRestoreConnect – возникает при очередной ошибке попытки восстановления соединения. При потере соединения пользователю предоставляется выбор, какое из действий предпринять. В случае успеха выдается сообщение, что соединение восстановлено. При очередной ошибке восстановления соединения мы можем посчитать попытки в нашем коде и предпринимать какие-то иные действия в случае необходимости. На компоненте TpFIBErrorHandler мы остановимся в отдельном разделе, сейчас же скажем, что обработчик ошибок при возникновении потери соединения просто подавляет стандартную реакцию на ошибку. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 16:20 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
rdb_devdeveloper0118, выдержка из FIBPlus Developer's Guide: Обработка потери соединения Спасибо. Но в моём случае нет потери соединения. Нет автоматического (так же как и вручную реализованного) восстановления соединения. Если компонент pFIBDatabase обнаружит потерю соединения, то возникнет соответствующее исключение, которое у меня безусловно завершит программу, выдав при этом пользователю соответствующее сообщение. Так вот, в описываемом случае подобных исключений не происходит! Происходит абсолютно непонятное для меня исключение: Код: sql 1. 2. 3. 4.
Происходит оно хоть и часто, но непредсказуемо. Не удалось выявить никаких закономерностей чтобы гарантированно его повторить. Я не смог нагуглить внятного описания возможных причин этого исключения. И сейчас у меня дилемма: либо пытаться в программе как-то обработать эту ситуацию (но, если честно, даже не знаю как), либо пытаться найти причину в настройках окружения. Уважаемый hvlad хоть и намекает что вместо болтовни мне не помешало бы сделать какие-то телодвижения, но мне бы догадаться какие именно... Имеющуюся информацию об исключении я приводил. Другой нет. Из фибов я постарался вытащить все какие есть коды/сообщения, на большее у меня, видимо, уже знаний не хватает. Остались только вопросы по параметрам мобильного интернета, о которых меня спросили тут, но я пока их не имею. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 16:36 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Ну сотовый оператор - это замечательно, а приложение при этом случайно не многопоточное? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 16:44 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
developer0118Но в моём случае нет потери соединения Ты заблуждаешься. Есть всего пара ошибок чтения/записи сокета, которые не сопровождаются его потерей, но они - не твой случай. И сделай так, чтобы firebird.log писался и на клиентской стороне. Обычно для этого достаточно положить fbclient.dll и firebird.msg в папку с приложением. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 17:31 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovdeveloper0118Но в моём случае нет потери соединения Ты заблуждаешься. Похоже да, заблуждаюсь. Но не совсем... Поэкспериментировал на локальной базе. Действительно, при остановке FB иногда сперва возникает исключение "Error reading data from the connection". Но не всегда это исключение сопровождается потерей коннекта. В некоторых случаях (на реальной БД) я получаю в лог (который пишется в ту же БД через то же соединение) информацию о таком исключении... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 19:18 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
16.01.2018 19:18, developer0118 пишет: > я получаю в лог (который пишется в ту же БД не делай так Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 19:20 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамНу сотовый оператор - это замечательно, а приложение при этом случайно не многопоточное? Нет. По крайней мере вручную потоки не создаются. Если только где-то в дебрях дельфи-ехлиб-фиб, но это вроде не так (или ошибаюсь?) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 19:20 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Мимопроходящий16.01.2018 19:18, developer0118 пишет: > я получаю в лог (который пишется в ту же БД не делай так Аргументируй. Если в БД записать не удается, то пишется в файл. Но как правило удается, так как бОльшая часть исключений связана с интерфейсом, а не коннектом к БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 19:24 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
developer0118... Аргументируй. ... Данный конкретный случай не заставляет задуматься о то, что твой лог может оказаться неполным? ... И, тебя уже раз 15 спросили про firebird.log на клиентской стороне, а ты все о своем. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 19:37 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
developer0118проблемный комп находится территориально в другом городе от меня, я имею на него доступ только удаленно и изредка... Ну а сервер, к которому он подключается, под вашим контролем? Запустите на нём аудит подключений/отключений и ошибок. Сдаётся мне, это будет занятное чтиво. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 22:07 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
чччД> И, тебя уже раз 15 спросили про firebird.log на клиентской стороне, а ты все о своем. Да ему 15 раз 15 разных вопросов задали, на половину из которых он толком не ответил/не сделал, ибо "не знает как и что толком делать". :) Ну вон, хоть многопотока дарвинисткого нету, и-то хлеб. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 23:15 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
В общем, всем спасибо за помощь, даже тем, кто в первую очередь язвил, но при этом и помогал :) Выяснилось тут масса деталей. Похоже, я с самого начала ввел всех в заблуждение. Поэтому тему можно закрывать. Если кому вдруг интересны подробности: Коннект, похоже, всё-таки пропадает при возникновении этой ошибки. Программа древняя, с большим багажом "так исторически сложилось". В ней открывается одновременно два коннекта: через TIBDatabase и через TpFIBDatabase. При этом коннекты рвались не одновременно, поэтому в некоторых случаях информация об исключении в одном коннекте успешно записывалась в БД через другой коннект. Пользовательский посыл "Невозможно работать! Ошибка каждые пять минут!" так же оказался преувеличенным (кто бы мог подумать :) Выяснилось, что программа отваливалась только после нескольких минут бездействия. Учитывая предыдущий пункт возникло предположение, что кто-то (сетевой драйвер, либо какая-нить железка типа свич/модем) отрубает коннект если в нем нет активности свыше какого-то таймаута. Для проверки этой гипотезы сделал таймер с выполнением раз в 15 секунд запроса "SELECT CURRENT_TIMESTAMP FROM RDB$DATABASE" - пока что полёт нормальный. Изменил параметры KEEPALIVE_TIME = 3 мин, KEEPALIVE_PROBES = 5, KEEPALIVE_INTERVAL = 15 сек. Но эффект увижу, видимо, только после перезагрузки сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2018, 13:28 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Да, настройки KEEPALIVE вступят в силу только после перезапуска сервера, когда стек TCP/IP будет вновь подниматься ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2018, 14:46 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Рекомендуется еще проверить энергосбережение на клиенте, может гаситься сетевуха для экономии электричества. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2018, 15:07 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Какая сетевуха? У него там usb-модем какой-нибудь. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2018, 15:08 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамКакая сетевуха? У него там usb-модем какой-нибудь.модем скорее всего воткнут в сохо роутер, а потом обычная витая пара и обычная сетевуха, на которой по дефолту стоит галка "отрубаться при безделье". ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2018, 16:07 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Впрочем, да. Нет предела совершенству. (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2018, 16:08 |
|
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyМодем, скорее всего, воткнут в сохо роутер, а потом обычная витая пара и обычная сетевуха, на которой по дефолту стоит галка "отрубаться при безделье".Как знать... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2018, 16:13 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1561269]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 172ms |
0 / 0 |