powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
56 сообщений из 56, показаны все 3 страниц
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584026
developer0118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, помогите советом куда копать...

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 минут её словили.

Может кто с подобным сталкивался? Где копать? Ковырять сетевые настройки Убунты? Настройки фаерберда на сервере? Сетевые настройки винды на клиенте? Или же в программе искать косяк?
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584031
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
developer0118Может кто с подобным сталкивался? Где копать? Ковырять сетевые настройки Убунты? Настройки фаерберда на сервере? Сетевые настройки винды на клиенте? Или же в программе искать косяк?
ответ вот тут, в вашем же сообщении
" Везде работает всё более-менее стабильно, кроме одного офиса, в котором интернет через сотового оператора. "
какой тогда может быть "косяк в программе", "настройки ФБ на сервере", "сетевые настройки убунты"?

если сотовый оператор рвет соединения, чем вы это "настроите", интересно?

Впрочем, теоретически может помочь, если в программе 1 раз в минуту "тыкать" в сервер каким-нибудь примитивным запросом, типа select * from rdb$database.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584038
developer0118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvесли сотовый оператор рвет соединения, чем вы это "настроите", интересно?
Почему тогда у других программ нет проблем с интернетом?

И потом, соединение-то не рвется. В программе реализовано логгирование ошибок в БД. Так вот, некоторая часть этих ошибок (имею в виду упомянутые Error writing data to the connection) успешно записываются в БД. Стало быть коннект не оборвался, сервер не требует повторной авторизации и т.п.

kdvВпрочем, теоретически может помочь, если в программе 1 раз в минуту "тыкать" в сервер каким-нибудь примитивным запросом, типа select * from rdb$database.
Да тыкали уже, правда для других целей. Бестолку.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584040
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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. и у меня проблемы.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584043
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvВпрочем, теоретически может помочь, если в программе 1 раз в минуту "тыкать" в сервер каким-нибудь примитивным запросом, типа select * from rdb$database.Это не поможет. Поможет только следствие проблемы поймать.

У меня кое где раз в 5 секунд делается подобное. Только не select, а CommitRetaining у readonly-транзакции. Для удостоверения, что коннект не пропал.
Так вот, именно эта же ошибка именно на этом CommitRetain и стала на 3.0.2 появляться в локалке, где раньше годами на 2.1 работал без проблем этот механизм.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584046
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

это проблемы с разрывом соединением, а CommitRetaining здесь вообще не причём.
У меня подозрения что некоторые программы переживают кратковременное отсутствие соединения гораздо лучше чем Firebird, и возможно даже восстанавливают его. Поэтому в TeamViewer это не заметно.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584054
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
developer0118...Почему тогда у других программ нет проблем с интернетом?...Программы такие потому что.

Для клиентской части клиент-серверного приложения обрыв соединения фатален, если только это самое приложение не написано специально с учетом возможности обрыва.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584060
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
developer0118И потом, соединение-то не рвется. В программе реализовано логгирование ошибок в БД. Так
вот, некоторая часть этих ошибок (имею в виду упомянутые Error writing data to the
connection) успешно записываются в БД. Стало быть коннект не оборвался, сервер не требует
повторной авторизации и т.п.

Не факт. Соединение может автоматически восстанавливаться приложением. Проконсультируйтесь
у его автора.

Кстати, а в firebird.log что об этих ошибках написано?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584061
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисэто проблемы с разрывом соединением, а CommitRetaining здесь вообще не причёмЭто понятно, я об этом и говорю.
Просто CommitRetaining я вызываю очень часто именно для того, чтобы этот разрыв соединения поймать. И ловлю.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584062
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКстати, а в firebird.log что об этих ошибках написано?Я лично еще не готов нормальный отчет об этой проблеме воспроизвести, но собираюсь сделать это. Сейчас так, в тему просто написал.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584074
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
developer0118Почему тогда у других программ нет проблем с интернетом?Потому что они не поддерживают постоянное соединение.
RTFM: statefull connection, stateless connection
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584172
developer0118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovСоединение может автоматически восстанавливаться приложением. Проконсультируйтесь
у его автора.
Я его автор, правда не первый :)

Автоматического восстановления коннекта в программе нет. Более того, в случае "нормального" разрыва соединения пользователю выдается страшное сообщение, мол, всё пропало, ваши данные возможно в БД не попали, переподключитесь и проверьте. И программа закрывается.

Но в данном случае разрыва как такового не происходит, pFIBDatabase.Connected = True, да и сервер при следующих запросах не требует авторизации, то есть тоже не считает что клиент отвалился.

Dimitry SibiryakovКстати, а в firebird.log что об этих ошибках написано?

Ничего не нашел, но возможно плохо смотрел. Гляну ещё разок повнимательнее...
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584183
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
developer0118Но в данном случае разрыва как такового не происходит, pFIBDatabase.Connected = True, да и сервер при следующих запросах не требует авторизации, то есть тоже не считает что клиент отвалился.Тогда в чём проблема ?

Полный статус-вектор с ошибкой есть ? Там всегда есть имя операции, которая дала ошибку
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584196
developer0118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladТогда в чём проблема ? Полный статус-вектор с ошибкой есть ? Там всегда есть имя операции, которая дала ошибку
Проблема в том, что в одном офисе операции не дают ошибку, а в другом - дают.

Даже если я точно определю какая конкретно операция не выполнилась (какой Query с каким SQL) - что мне это даст? Ведь минутой раньше или минутой позже этот же SQL нормально выполняется. А в других офисах, повторюсь, вообще не возникает подобной ошибки.

Всё что у меня есть:
Код: sql
1.
2.
3.
4.
SQLCode: -902
IBErrorCode: 335544726
IBMessage: Error reading data from the connection.
SQLMessage: Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584205
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
developer0118Проблема в том, что в одном офисе операции не дают ошибку, а в другом - дают.Ещё раз, медленно: если коннект не рвётся - в чём проблема ? Научить обрабатывать ошибки ?

developer0118Даже если я точно определю какая конкретно операция не выполнилась (какой Query с каким SQL) - что мне это даст?Речь идёт о том вызове API (winsock, в данном случае), который завершился с ошибкой. И о самой ошибке - она тоже есть в статус-векторе.
Это может помочь нам определить как с этим бороться.

developer0118Всё что у меня естьЭто полный статус-вектор ? Если в нём только isc_net_read_err и больше ничего нет, то это обычно значит что сокет уже закрыт. Т.е. реальная ошибка была раньше.

Что в firebird.log на стороне клиента ?
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584212
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
developer0118Почему тогда у других программ нет проблем с интернетом?
у каких у других? Какие из них держат постоянно открытое соединение с сервером? "Браузер и почта" к таким программам не относятся, совсем.
А Teamviewer - так он постоянно что-то передает, у него соединение и не рвется.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584275
rstrelba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такое не пробовал?
DummyPacketInterval = 30
в firebird.conf
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584280
Любезный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я во избежание такого принудительного обрыва делал в своих приложениях на читающей транзакции запрос SELECT 1 FROM RDB$DATABASE по таймеру раз в 65500 милисекунд. Если запрос выполнялся с ошибкой - значит, с базой или с коннектом есть какие-то проблемы, и можно не продолжать долбиться к серверу.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584313
developer0118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladЧто в firebird.log на стороне клиента ?
Только вот такая строка:
Код: sql
1.
	INET/inet_error: read errno = 10054, client host = comp1, address = 127.0.0.1/51129, user = user1


Причем этих записей значительно меньше, нежели возникающих ошибок.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584332
developer0118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rstrelbaТакое не пробовал?
DummyPacketInterval = 30
в firebird.conf
Неа, страшно
Код: sql
1.
2.
3.
4.
 NOTE. This option may hang or crash Windows NT4 or Windows 2000 pre SP3 
 on the client side as explained here: 
 http://support.microsoft.com/default.aspx?kbid=296265.
 or may not prevent eventual inactive client disconnection for other OS.


Шевелил tcp_keepalive_*, но не помогло. Либо мало шевелил...
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584361
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
developer0118Или же в программе искать косяк?Не то чтобы косяк, но менять надо подход:
с
коннект-вся_работа-дисконнект
на
пока_работа(коннект_пачка_операторов-дисконнект)
Хотя те же фибы к такому подходу прямо скажем не расположены.

В качестве полумеры поставить на той же площадке терминальный сервер и работать через него. Это быстрый и самый простой в реализации вариант.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584382
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
developer0118Только вот такая строка:
Код: sql
1.
	INET/inet_error: read errno = 10054, client host = comp1, address = 127.0.0.1/51129, user = user1

Не думаю, что от 127.0.0.1 к серверу лежит сотовая связь

PS что за манера отвечать не на все поставленные вопросы ?
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584389
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня такое впечатление, что приложение работает одновременно с двумя БД и соединение
рвётся только с одной. Причём локальной. И рвёт его антивирус.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584416
developer0118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovУ меня такое впечатление, что приложение работает одновременно с двумя БД и соединение
рвётся только с одной. Причём локальной. И рвёт его антивирус.

Программа работает либо с удаленной БД, либо с локальной. С какой работать - выбирает пользователь при запуске программы.
Про антивирус спасибо за наводку, проверю.

hvladНе думаю, что от 127.0.0.1 к серверу лежит сотовая связь
Да-да, это я уже туплю, взял видимо не тот firebird.log.
Но других firebird.log не нашел на компе.

hvladЭто полный статус-вектор ? Если в нём только isc_net_read_err и больше ничего нет, то это обычно значит что сокет уже закрыт. Т.е. реальная ошибка была раньше.
PS что за манера отвечать не на все поставленные вопросы ?
Видимо не правильно понимаю термин "статус-вектор", сходу гугл тоже не помог. Что и где надо ещё посмотреть? Или что и где почитать?
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584459
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как именно осуществлено интернет подключение через провайдера сотовой связи? Стоит роутер с USB 3g/4g модемом? На USB модеме используется внутренняя антенна или же через AUX - репитер/усилитель + направленная антенна? Что за USB модем? Прошивка модема свежая? Настройки MTU на интерфейсе 3g/4g? Флажок "nailed-up" имеется и активирован?
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584529
MikeDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
developer0118, VPN поставь и ходи через него.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584612
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikeDDdeveloper0118, VPN поставь и ходи через него.Забавно, как надстройка над нестабильным каналом добавит стабильности?
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584868
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyMikeDDdeveloper0118, VPN поставь и ходи через него.Забавно, как надстройка над нестабильным каналом добавит стабильности?Лишь устранит возможность ошибок передачи пакета, неотлавливаемых через CRC.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39584958
MikeDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devIvan_Pisarevskyпропущено...
Забавно, как надстройка над нестабильным каналом добавит стабильности?Лишь устранит возможность ошибок передачи пакета, неотлавливаемых через CRC.
Чисто по субъективным ощущениям по VPN стабильность канала лучше на 3G/4G модемах. Опсосы могут на ходу менять внешний IP и тут VPN здорово выручает. Да и вообще выставлять наружу сервер FB мягко говоря плохо по соображениям безопасности. ТСу советую глянуть на SoftEher VPN.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585047
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
developer0118hvladЭто полный статус-вектор ? Если в нём только isc_net_read_err и больше ничего нет, то это обычно значит что сокет уже закрыт. Т.е. реальная ошибка была раньше.
PS что за манера отвечать не на все поставленные вопросы ?
Видимо не правильно понимаю термин "статус-вектор", сходу гугл тоже не помог. Что и где надо ещё посмотреть? Или что и где почитать?Про статус-вектор (status-vector) можно почитать как в IB API Guide, так и в исходниках FIB+.
Впрочем, судя по всему, FIB+ полностью интерпретирует все эл-ты из статуса.

Я всё же хотел бы узнать - если коннект не рвётся, то где проблема ?
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585055
developer0118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_devКак именно осуществлено интернет подключение через провайдера сотовой связи? Стоит роутер с USB 3g/4g модемом? На USB модеме используется внутренняя антенна или же через AUX - репитер/усилитель + направленная антенна? Что за USB модем? Прошивка модема свежая? Настройки MTU на интерфейсе 3g/4g? Флажок "nailed-up" имеется и активирован?
У меня нет этой информации, проблемный комп находится территориально в другом городе от меня, я имею на него доступ только удаленно и изредка... Если у вас есть (могут появиться) советы/предположения, зависящие от спрашиваемых параметров - я постараюсь их выяснить.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585062
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
developer0118У меня нет этой информации, проблемный комп находится территориально в другом городе от меня, я имею на него доступ только удаленно и изредка... Если у вас есть (могут появиться) советы/предположения, зависящие от спрашиваемых параметров - я постараюсь их выяснить.Советы легко выводятся из вопросов.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585085
developer0118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladЯ всё же хотел бы узнать - если коннект не рвётся, то где проблема ?
Ну проблема в том, что программа не работает :) Уже предчувствую кучу мнений на тему "надо правильно писать программы!", "не умеешь обрабатывать исключения!" и т.п.

В программе худо-бедно анализируются и обрабатываются исключения. Написан обработчик Application.OnException, в нём в зависимости от разных параметров информация может либо логгироваться в БД, либо в файл; по каждому исключению собирается максимально полная информация для логгирования; пользователю по-возможности выдается максимально понятное ему сообщение на русском языке и т.д., и т.п.

Такой подход полностью устраивал на протяжении 10+ лет, в том числе в проектах 24/7 с несколькими сотнями пользователей и т.п. И вот в одной довольно мелкой программке, с которой работает всего-то десяток человек, сервер которой хостится на минимальных (потому что самых дешевых) ресурсах RuVDS - возникла такая вот беда. Причем только в одном из нескольких офисов. Поэтому как-то логика подсказывает в первую очередь попытаться найти проблему в окружении, а не внутри программы...

Конечно наверно можно засунуть каждый вызов pFIBDataSet.Open в блок try-except с подробнейшим анализом исключений и с попыткой выполнить запрос ещё раз (или два? три? десять?), но мне кажется что это совсем уж по-джедайски...
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585093
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
16.01.2018 13:39, developer0118 пишет:

> Конечно наверно можно засунуть каждый вызов pFIBDataSet.Open в блок try-except с подробнейшим анализом исключений
> и с попыткой выполнить запрос ещё раз (или два? три? десять?), но мне кажется что это совсем уж по-джедайски...


но… зачем же?!
это ж ведь очень и очень!
да! да! но нет!
©

если я всё правильно путаю, у плюсов есть ЦЕНТРАЛИЗОВАННЫЙ обработчик ошибок.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585100
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийесли я всё правильно путаю, у плюсов есть ЦЕНТРАЛИЗОВАННЫЙ обработчик ошибок.

А если я правильно путаю, у них же есть опция автоматического восстановления оборванного
соединения, которая, скорее всего, у аффтара и включена.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585105
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
16.01.2018 13:54, Dimitry Sibiryakov пишет:

> у них же есть опция автоматического восстановления оборванного
> соединения, которая, скорее всего, у аффтара и включена.

"Как принять? Стоя? Сидя? Лёжа!" ©

упаси Господи от такого неестественного интеллекта...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585206
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
developer0118И вот в одной довольно мелкой программке, с которой работает всего-то десяток человек, сервер которой хостится на минимальных (потому что самых дешевых) ресурсах RuVDS - возникла такая вот беда. Причем только в одном из нескольких офисов. Поэтому как-то логика подсказывает в первую очередь попытаться найти проблему в окружении, а не внутри программы...Всё правильно. И приз выиграла сотовая связь. Не так ли ? :)

PS можно долго пинать друг друга, но без доп инф-ции (которую не получить без доп телодвижений) я, со своей стороны, сделать ничего не могу
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585209
developer0118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovА если я правильно путаю, у них же есть опция автоматического восстановления оборванного
соединения, которая, скорее всего, у аффтара и включена.

pFIBDataBase.AutoReconnect = False
pFIBDataBase.Timeout = 0
pFIBDataBase.WaitForRestoreConnect = 0
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585225
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
procedure TForm1.dbAfterRestoreConnect(Database: TFIBDatabase);
begin
  MessageDlg('Connection restored', mtInformation, [mbOk], 0);
end;

procedure TForm1.dbErrorRestoreConnect(Database: TFIBDatabase; E: EFIBError;
    var Actions: TOnLostConnectActions);
begin
  Inc(AttemptRest);
  Label4.Caption:=IntToStr(AttemptRest);
  Label4.Refresh
end;

procedure TForm1.dbLostConnect(Database: TFIBDatabase; E: EFIBError;
    var Actions: TOnLostConnectActions);
begin
  case cmbKindOnLost.ItemIndex of
    0: begin
      Actions := laCloseConnect;
      MessageDlg('Connection lost. TpFIBDatabase will be closed!', mtInformation, [mbOk], 0);
    end;
    1:begin
      Actions := laTerminateApp;
      MessageDlg('Connection lost. Application will be closed!', mtInformation, [mbOk], 0);
    end;
    2:Actions := laWaitRestore;
  end;
end;

procedure TForm1.pFibErrorHandler1FIBErrorEvent(Sender: TObject; ErrorValue: EFIBError;
    KindIBError: TKindIBError; var DoRaise: Boolean);
begin
  if KindIBError = keLostConnect then begin
    DoRaise := false;
  end;
end;
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585247
developer0118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_devdeveloper0118, выдержка из FIBPlus Developer's Guide:
Обработка потери соединения

Спасибо. Но в моём случае нет потери соединения. Нет автоматического (так же как и вручную реализованного) восстановления соединения. Если компонент pFIBDatabase обнаружит потерю соединения, то возникнет соответствующее исключение, которое у меня безусловно завершит программу, выдав при этом пользователю соответствующее сообщение.

Так вот, в описываемом случае подобных исключений не происходит! Происходит абсолютно непонятное для меня исключение:
Код: sql
1.
2.
3.
4.
SQLCode: -902
IBErrorCode: 335544726
IBMessage: Error reading data from the connection.
SQLMessage: Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements.


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

Я не смог нагуглить внятного описания возможных причин этого исключения.

И сейчас у меня дилемма: либо пытаться в программе как-то обработать эту ситуацию (но, если честно, даже не знаю как), либо пытаться найти причину в настройках окружения.

Уважаемый hvlad хоть и намекает что вместо болтовни мне не помешало бы сделать какие-то телодвижения, но мне бы догадаться какие именно... Имеющуюся информацию об исключении я приводил. Другой нет. Из фибов я постарался вытащить все какие есть коды/сообщения, на большее у меня, видимо, уже знаний не хватает. Остались только вопросы по параметрам мобильного интернета, о которых меня спросили тут, но я пока их не имею.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585264
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну сотовый оператор - это замечательно, а приложение при этом случайно не многопоточное?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585324
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
developer0118Но в моём случае нет потери соединения

Ты заблуждаешься. Есть всего пара ошибок чтения/записи сокета, которые не сопровождаются
его потерей, но они - не твой случай. И сделай так, чтобы firebird.log писался и на
клиентской стороне. Обычно для этого достаточно положить fbclient.dll и firebird.msg в
папку с приложением.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585387
developer0118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovdeveloper0118Но в моём случае нет потери соединения
Ты заблуждаешься.
Похоже да, заблуждаюсь. Но не совсем...

Поэкспериментировал на локальной базе. Действительно, при остановке FB иногда сперва возникает исключение "Error reading data from the connection". Но не всегда это исключение сопровождается потерей коннекта. В некоторых случаях (на реальной БД) я получаю в лог (который пишется в ту же БД через то же соединение) информацию о таком исключении...
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585388
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
16.01.2018 19:18, developer0118 пишет:
> я получаю в лог (который пишется в ту же БД

не делай так
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585389
developer0118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов РустамНу сотовый оператор - это замечательно, а приложение при этом случайно не многопоточное?

Нет. По крайней мере вручную потоки не создаются. Если только где-то в дебрях дельфи-ехлиб-фиб, но это вроде не так (или ошибаюсь?)
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585391
developer0118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий16.01.2018 19:18, developer0118 пишет:
> я получаю в лог (который пишется в ту же БД

не делай так

Аргументируй.

Если в БД записать не удается, то пишется в файл. Но как правило удается, так как бОльшая часть исключений связана с интерфейсом, а не коннектом к БД.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585400
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
developer0118...
Аргументируй.
...
Данный конкретный случай не заставляет задуматься о то, что твой лог может оказаться неполным?
...
И, тебя уже раз 15 спросили про firebird.log на клиентской стороне, а ты все о своем.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585445
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
developer0118проблемный комп находится территориально в другом городе от меня, я имею на него доступ
только удаленно и изредка...

Ну а сервер, к которому он подключается, под вашим контролем? Запустите на нём аудит
подключений/отключений и ошибок. Сдаётся мне, это будет занятное чтиво.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585456
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД> И, тебя уже раз 15 спросили про firebird.log на клиентской стороне, а ты все о своем.

Да ему 15 раз 15 разных вопросов задали, на половину из которых он
толком не ответил/не сделал, ибо "не знает как и что толком делать". :)
Ну вон, хоть многопотока дарвинисткого нету, и-то хлеб.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585769
developer0118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, всем спасибо за помощь, даже тем, кто в первую очередь язвил, но при этом и помогал :)

Выяснилось тут масса деталей. Похоже, я с самого начала ввел всех в заблуждение. Поэтому тему можно закрывать.

Если кому вдруг интересны подробности:
Коннект, похоже, всё-таки пропадает при возникновении этой ошибки. Программа древняя, с большим багажом "так исторически сложилось". В ней открывается одновременно два коннекта: через TIBDatabase и через TpFIBDatabase. При этом коннекты рвались не одновременно, поэтому в некоторых случаях информация об исключении в одном коннекте успешно записывалась в БД через другой коннект.

Пользовательский посыл "Невозможно работать! Ошибка каждые пять минут!" так же оказался преувеличенным (кто бы мог подумать :) Выяснилось, что программа отваливалась только после нескольких минут бездействия.

Учитывая предыдущий пункт возникло предположение, что кто-то (сетевой драйвер, либо какая-нить железка типа свич/модем) отрубает коннект если в нем нет активности свыше какого-то таймаута. Для проверки этой гипотезы сделал таймер с выполнением раз в 15 секунд запроса "SELECT CURRENT_TIMESTAMP FROM RDB$DATABASE" - пока что полёт нормальный.

Изменил параметры KEEPALIVE_TIME = 3 мин, KEEPALIVE_PROBES = 5, KEEPALIVE_INTERVAL = 15 сек. Но эффект увижу, видимо, только после перезагрузки сервера.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585849
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, настройки KEEPALIVE вступят в силу только после перезапуска сервера, когда стек TCP/IP будет вновь подниматься
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585865
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рекомендуется еще проверить энергосбережение на клиенте, может гаситься сетевуха для экономии электричества.
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585868
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая сетевуха? У него там usb-модем какой-нибудь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585925
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамКакая сетевуха? У него там usb-модем какой-нибудь.модем скорее всего воткнут в сохо роутер, а потом обычная витая пара и обычная сетевуха, на которой по дефолту стоит галка "отрубаться при безделье".
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585927
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Впрочем, да. Нет предела совершенству. (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
    #39585932
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyМодем, скорее всего, воткнут в сохо роутер, а потом обычная витая пара и обычная сетевуха, на которой по дефолту стоит галка "отрубаться при безделье".Как знать... :)
...
Рейтинг: 0 / 0
56 сообщений из 56, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird 3.0.2, Интернет через сотового оператора, Error reading data from the connection
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]