powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Разрыв пользовательского соединения через 2 часа
25 сообщений из 144, страница 1 из 6
Разрыв пользовательского соединения через 2 часа
    #39516157
nnivanova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Есть приложение, написанное на C#, СУБД Firebird 2.5.7, SuperServer.
По истечении двухчасового молчания клиента, подключенного к серверу Firebird, происходит разрыв соединения. Под молчанием имею в виду - пользователь ничего не делает в программе в течение двух часов. После при попытке выполнить какое-либо действие (например, записать информацию или сохранить), выходит ошибка о разрыве соединения: Error reading data from the connection.
Из того, что накопала: разобралась в KEEPALIVE, он работает, если смотреть по перехваченным пакетам в Wareshark, KeepAlive происходит каждые две минуты с сервера, параметры меняла, он не влияет на наличие ошибки.
Интересно, что разрыв стабилен ровно через два часа. По перехвату пакетов... Через два часа приходит пакет от сервера о подтверждении соединения, как думаю, тег ACK,на что клиент ему кидает ответный пакет. Затем КЛИЕНТ первый отправляет пакет с тегами ACK и FIN по порту 3050(192.168.132.79-клиент, 192.168.100.97-сервер. ):
192.168.132.79 192.168.100.97 64388 → 3050 [ACK] Seq=405 Ack=469 Win=65024 Len=0
192.168.132.79 192.168.100.97 64388 → 3050 [FIN, ACK] Seq=405 Ack=469 Win=65024 Len=0

И если используется порт 3050 от клиента, как понимаю, это Firebird сам разрывает соединение, не ОС.
ОС сервера: Windows Server 2008 R2 Standart. ОС клиента: любая, на win 7, 8, XP выходит данная ошибка.

Подскажите, что у меня не так, если есть вопросы-охотно отвечу. Тяготит, что после двухчасового простоя клиенту приходится переподключаться. Сервер в сети, каждые 30 сек на сервер отправляются пустые пакеты Ping-ом для проверки доступности сервера, все пакеты успешно доходят и возвращаются.
Может я саму работу системы недопонимаю, помогите, уже неделю убила на решение этого вопроса...
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516165
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nnivanova,
подозрительно похоже на параметр KeepAliveTime в винде, он по умолчанию как раз 2 часа...
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516167
nnivanova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тоже так думала, но нет, его я меняла и на 5 мин, и на 2 минуты. И первый FIN идет от клиента к серверу, а не наоборт. на форуме одном читала про "FIN-все данные переданы, получены все подтверждения и соединение ЗАВЕРШАЕТСЯ логичным способом." Только как это так, если пользователь ничего не нажимает и не собирался разрывать соединение. Такая же беда, если подключиться к БД через IBExpert, два часа - и разрыв.
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516172
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nnivanova, где вы его меняли?
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516179
nnivanova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tactical Nuclear Penguin,
на сервере, создала соответ. параметры в разделе:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters:
KeepAliveTime = 300000.
KeepAliveInterval = 1000
и TcpMaxDataRetransmissions=5
На клиенте тоже пыталась изменить, установила на 5 мин, но разрыв спустя два часа опять произошел
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516180
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516182
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Могу даже с автографом :)
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516185
nnivanova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
o_v_a,
спасибо! По этой статье и изменяла параметры.
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516187
nnivanova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
o_v_a,
не помогло. Как понимаю, эти параметры в сервере нужно изменять? или в клиенте? И это же на случай разрыва (потери) соединения по сети. А потери то нет, пинги то идут стабильно.
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516190
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В винде параметры keepalive применяются только после перезагрузки, кстати.
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516191
nnivanova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
o_v_a,
да, всегда перезагружала. ))
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516199
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у Вас всё в локалке или удалёнка какая?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516202
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Кипалив итак по умолчанию включён, AFAIK.
Лучше уж тогда dummy-пакеты посылайте, это проще.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516203
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nnivanova,
o_v_aСтек TCP отслеживает момент прекращения прохождения пакетов между клиентом и сервером, запуская таймер KEEPALIVE. Как только таймер достигнет величины KEEPALIVE_ TIME, стек TCP сервера выполняет первую пробу KEEPALIVE. Проба – это пустой пакет c флагом ACK, отправляемый клиенту. Если на стороне клиента все в порядке, то стек TCP на клиентской стороне посылает ответный пакет с флагом ACK и стек TCP сервера, получив ответ, сбрасывает таймер KEEPALIVE. Если клиент не отвечает на пробу, то пробы со стороны сервера продолжают выполняться. Их количество равно KEEPALIVE_ PROBES и выполняются они через интервал времени KEEPALIVE_ INTERVAL. Если клиент не ответил на последнюю пробу, то по истечении еще одного интервала времени KEEPALIVE_ INTERVAL стек TCP операционной системы сервера закрывает соединение и Firebird высвобождает все ресурсы, занимаемые обслуживанием данного соединения.

Вы в первом сообщении привели только финальный аккорд.
А предыдущие пробы как проходят?

Меняйте параметры keepalive на сервере на вменяемые для тестов, например,
KeepAliveTime = 15000
KeepAliveInterval = 1000
и TcpMaxDataRetransmissions=5
Перезагружайте сервер.

Запускайте клиента.
Стартуйте сниффер.
15 секунд ничего не делайте в клиенте для чистоты эксперимента, дожидайтесь обрыва через ещё 5 секунд и препарируйте трафик по логам сниффера.
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516205
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, сорри, вопрос про локалку снимается, судя по айпишникам.
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516206
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамP.S. Кипалив итак по умолчанию включён, AFAIK.
Лучше уж тогда dummy-пакеты посылайте, это проще.
Решение для легких извращенцев 18968142
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516213
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman> Решение для легких извращенцев 18968142

Не знаю, что ты там менял (или просто для развлечения/изучения?),
но сто лет уже как соотв. настройка в конфиге есть.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516216
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только ведь вот... Клиент инициирует у вас закрытие соединения.
KEEPALIVE тут не при чём.

Нет ли каких настроек по таймауту неактивного открытого соединения в используемом вами наборе компонент для работы с Firebird?
Вы разработчик и у вас есть исходные тексты программы?
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516218
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамНе знаю, что ты там менял (или просто для развлечения/изучения?),
Там обертка над клиентской частью (прокладка), которая при простое дергает указанный в ini-файле запрос.
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516219
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эх ты, слабак... :) Нет чтобы на более низком уровне работать. :)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516221
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И косвенно то, что настройки KEEPALIVE не влияют на поведение программы, подтверждает тот факт, что причина разрыва - она именно на клиентской стороне.
Сниффер запускаете на сервере или на клиенте, кстати?
Просто если произошел ФИЗИЧЕСКИЙ разрыв и сервер на свой ACK не получает от клиента ACK, то по истечении количества проб СЕРВЕР закрывает сокет.
В вашем логе по вашим же словам закрытие коннекта выполняет клиент.
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516223
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык кипалив и на клиенте есть.

По сути, надо на клиенте его
ставить меньше, чем на сервере.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516225
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ха... nnivanovaТакая же беда, если подключиться к БД через IBExpert, два часа - и разрыв.
А вот это уже интересно...
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516233
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если шашечки - напишите простенькую программу,
которая делает то же самое - простой TCP-коннект c
параметром KEAPLIVE и логируйте на обоих концах.

Если ехать - попробуйте таки dummypacketinterval.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39516244
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А там в управлении электропитанием никакой каверзы нет?
Типа заснуть и отключить сетевуху?..
...
Рейтинг: 0 / 0
25 сообщений из 144, страница 1 из 6
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Разрыв пользовательского соединения через 2 часа
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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