Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Отваливается соединение / 25 сообщений из 50, страница 1 из 2
22.03.2016, 08:19
    #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
22.03.2016, 08:26
    #39197616
Говорят
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отваливается соединение
chebyrek,

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

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

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

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

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

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

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

chebyrekЕсли поделитесь ссылкой на что-то похожее, я попробую )
Проблемно...
...
Рейтинг: 0 / 0
22.03.2016, 09:46
    #39197676
Отваливается соединение
А нельзя ли просто клиентскую библиотеку заменить на более новую?
...
Рейтинг: 0 / 0
22.03.2016, 10:29
    #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
22.03.2016, 10:35
    #39197732
chebyrek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отваливается соединение
Коваленко Дмитрий,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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