powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Отваливается соединение
25 сообщений из 50, страница 1 из 2
Отваливается соединение
    #39197612
chebyrek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, прошу помощи )
Конфигурация такая Ubuntu 13.10/3.11.0-26/Firebird 1.5.6
На сервере одна база данных, подключение происходит из клиента под Windows. Проблема в том, что если оставить клиента на 20-30 минут без активности, то соединение обрывается при этом в firebird.log появляется строка
Код: plaintext
1.
base (Server)   Tue Mar 22 11:31:56 2016
        INET/inet_error: read errno = 110
То есть Connection timed out.

Читал вот эту статью, пробовал разные значения, ничего не меняется.
Сейчас значения такие:
Код: plaintext
1.
2.
3.
4.
5.
6.
sysctl.conf
...

 net.ipv4.tcp_keepalive_intvl = 60
 net.ipv4.tcp_keepalive_time = 3200
 net.ipv4.tcp_keepalive_probes = 20

В firebird.conf выставлен ConnectionTimeout = 300, а DummyPacketInterval закомментирован.
Мониторю трафик до и от сервера через WireShark, но keepalive-пакетов там не ходит совсем, ssh-подключение не отваливается, пинги тоже идут без потерь, проблема только с Firebird.
Благодарю за помощь.
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197616
Говорят
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chebyrek,

говорят, что Windows сама снимает соединение, если оно долго не используется.

Я когда-то (еще на FB 1.0) решал "проблему" в лоб: по таймеру, раз в 5 минут делал запросы к серверу, что-то вроде select 1 from rdb$database.
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197620
chebyrek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Говорят,

Дело в том, что у меня нет исходников клиента, а связь с разработчиками утеряна еще до того как я пришел на это место, программа где-то 2005-2006 года выпуска.
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197635
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написать обертку над gds32, которая будет "пинговать"? :)
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197656
chebyrek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman,

оу, тут я не мастер ) Если поделитесь ссылкой на что-то похожее, я попробую ) Сейчас заметил, что если одновременно запустить несколько клиентов и работать только в одном, то остальные отвалятся, а то в котором работаешь - нет.
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197657
wadmanНаписать обертку над gds32, которая будет "пинговать"? :)
Как ты контекст tcp коннекта получишь?
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197658
chebyrek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman,

И вот еще, у меня есть еще один самописный "клиент" к этой базе, он каждые 2 минуты забирает из базы данные, пишет их в csv и пересылает на другой сервер, он запущен на той же машине вместе с обычным клиентом. И он не отваливается.
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197660
Потому что
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chebyrekwadman,

И вот еще, у меня есть еще один самописный "клиент" к этой базе, он каждые 2 минуты забирает из базы данные, пишет их в csv и пересылает на другой сервер, он запущен на той же машине вместе с обычным клиентом. И он не отваливается.
Потому что

авторон каждые 2 минуты
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197671
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как ты, ведмедьwadmanНаписать обертку над gds32, которая будет "пинговать"? :)
Как ты контекст tcp коннекта получишь?
Зачем?
Обертка - это такая штука, которая через себя пропускает весь функционал gds32, вызывая оригинальную dll.

chebyrekЕсли поделитесь ссылкой на что-то похожее, я попробую )
Проблемно...
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197676
А нельзя ли просто клиентскую библиотеку заменить на более новую?
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197726
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Говорятchebyrek,

говорят, что Windows сама снимает соединение, если оно долго не используется.

Я когда-то (еще на FB 1.0) решал "проблему" в лоб: по таймеру, раз в 5 минут делал запросы к серверу, что-то вроде select 1 from rdb$database.

Это слишком сложно.

Достаточно "периодически" запрашивать информацию о сервере/базе данных через isc_database_info.

Что то типа
Код: plaintext
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.
t_isc_connection::cn_status_type t_isc_connection::get_cn_status()
{
 ///Read-блокировка дескриптора подключения.
 const t_db_lock_guard__to_read __lock_to_read(m_guard_rw);

 ///Проверяем дескриптор операции
 if(!this->helper__is_active_cn())
  return cn_status__unitialized;

 ///Блокировка для выполнения синхронной операции
 const t_db_lock_guard __lock(m_guard,5*1000);

 assert(this->helper__is_active_cn());

 if(!__lock)
  return cn_status__timeout;

 status_vector_type sv;

 const unsigned char db_items[]={isc_api::ibp_isc_info_base_level};

 unsigned char res_buffer[20]={};

 if(m_provider->m_isc_database_info.point()(sv,
                                            &m_handle,
                                            sizeof(db_items),
                                            db_items,
                                            sizeof(res_buffer),
                                            res_buffer))
 {
  return cn_status__commincationfailure;
 }

 return cn_status__initialized;
}//get_cn_status


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

Можно вообще ничего не запрашивать, а передать "пустой" список db_items - {isc_api::ibp_isc_info_end};

Тоже пока работает.

---
Кстати периодическое дерганье сервера это не только три-четыре килограмма в случае FB2.1+ помогает проталкивать на сервер отложенные пакеты и устраняет адские тормоза с очисткой массива этих отложенных пакетов.

Как-то так.
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197732
chebyrek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коваленко Дмитрий,

Как я понял, обрывание связи это стандартное поведение сервера firebird и никак от него не избавиться, если нет возможности поправить код клиента?
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197736
?????
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chebyrekКоваленко Дмитрий,

Как я понял, обрывание связи это стандартное поведение сервера firebird и никак от него не избавиться, если нет возможности поправить код клиента?

18962066 - ?
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197738
chebyrek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А нельзя ли просто,

в смысле скачать более новый gds32.dll?
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197750
chebyrek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
?????,

я сейчас скачал firebird-2.5, взял из него fbclient.dll, переименовал в gds32.dll и положил в папку с клиентом. Ничего не изменилось, даже быстрее отвалилось )
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197828
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Говорятговорят, что Windows сама снимает соединение, если оно долго не
используется.
Нагло врут. Ни Windows ни клиент Firebird этого не делают. Это работа какого-то софта или
железа на пути. Наиболее известны таким поведением Comodo Firewall, NOD32, Cisco.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197834
Dimitry SibiryakovГоворятговорят, что Windows сама снимает соединение, если оно долго не
используется.
Нагло врут. Ни Windows ни клиент Firebird этого не делают. Это работа какого-то софта или
железа на пути. Наиболее известны таким поведением Comodo Firewall, NOD32, Cisco.

Что это меняет?
Что-то "снимает соединение". Куда проще "пинговать" связь, чем искать очередного "зловреда".
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197840
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что это меняетКуда проще "пинговать" связь, чем искать очередного "зловреда".

Без исходников приложения пинговать ты будешь как?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197928
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chebyrek,

А и правда. На машине с виндой антивирь есть? Отключить для теста на время пробовали? Между клиентом и сервером что-то кроме свичей есть?
...
Рейтинг: 0 / 0
Отваливается соединение
    #39197935
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlineМежду клиентом и сервером что-то кроме свичей есть?
Ставлю на WiFi роутер.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отваливается соединение
    #39198005
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

inject dll во все процессы

если процесс - нужный, то активируемся и обшариваем открытые порты

если находим 3050 - запускаем фоновый поток idle-приоритета и из него периодически туда какую-нибудь пустышку в wire protocol пихаем.
геморрой конечно, но в принципе и без исходников можно

...а если из gds32.dll можно хэндл коннекта выташить...

а ведь можно! - перехватываем какой-нибудь вызов isc_..., ждём пока приложение его вызовет и вытаскиваем из параметров хендл,

после чего запускаем фоновый поток и т.д....

PS. если программа в процессе работы может закрывать/переоткрывать соединения или того паче выгружать и заново загружать клиента - то потребуется и на это заложиться. Но большинство программ так не делают.
...
Рейтинг: 0 / 0
Отваливается соединение
    #39198070
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я таки сделал обертку. Жаль, IBExpert нормально с ней живет ровно до детача.
Из плюсов: теперь можно видеть всё, что делает программа с сервером и даже старому приложению (которое только с gds32 умеет) можно указывать, что и откуда грузить.

Осталось прикрутить механизм пинга.
...
Рейтинг: 0 / 0
Отваливается соединение
    #39198073
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

не понимаю, зачем такие страшные фантазии. разве что для развития собственного интеллекта.
но так это никуда не годится - из фонового процесса ты никогда не поймешь, решит в следующую секунду основной процесс дернуть коннект, или нет. А следовательно, это все - карточный домик.

Так что, если и можно такое сделать, то только подменой клиентской части, типа прокси, между приложением и настоящей клиентской частью. Теоретически может такое кто-то и делал, только я об этом не слышал.
...
Рейтинг: 0 / 0
Отваливается соединение
    #39198074
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanЯ таки сделал обертку.
гигант!
...
Рейтинг: 0 / 0
Отваливается соединение
    #39198430
chebyrek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторА и правда. На машине с виндой антивирь есть? Отключить для теста на время пробовали? Между клиентом и сервером что-то кроме свичей есть?

miwaonlineМежду клиентом и сервером что-то кроме свичей есть?
Ставлю на WiFi роутер.


Сервер этот виртуальный,находится в датацентре, так что между мной и сервером много чего быть может.
Если говорить об оборудовании с моей стороны, то в данный момент подо мной машинка с Windows 7, ходит в интернет напрямую через циску, без прокси, шлюзов и т.п, антивирус отключен.
В остальных офисах, компьютеры с windows 8.1, выходят в интернет через Wi-fi роутеры, так же без прокси и шлюзов, антивирус только встроенный в Windows.
Вот и не смотря на то, что железки везде разные, проблема одна и время, через которое происходит обрыв примерно одно.
...
Рейтинг: 0 / 0
25 сообщений из 50, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Отваливается соединение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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