powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Рвется соединение с сервером, таймаут 15 минут, как сократить?
8 сообщений из 8, страница 1 из 1
Рвется соединение с сервером, таймаут 15 минут, как сократить?
    #39352807
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет,

Ситуевина следующая, есть приложение на линуксах, соединяется через оракловый клиент с 11 сервером.
При разрыве соединения без RST пакетов приложение думает что соединение все еще есть, а по факту его уже нет и это длится примерно 15 минут! Куда копать чтобы сократить этот таймаут?
Приложение? (разработка говорит что это не к ним вообще)
Клиент Oracle?
Сервер Oracle?
Linux сервер Oracle?
Linux клиент Oracle?

Нарыл какие то настройки keepalive на Linux:
tcp_keepalive_intvl = 75
tcp_keepalive_time = 7200
tcp_keepalive_probes = 9

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

Нет, этот системные настройки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Рвется соединение с сервером, таймаут 15 минут, как сократить?
    #39352811
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например:
- tcp_keepalive_time = 120 (2 минуты)
- sqlnet.expire_time = 2 (минуты)
- поменять таймаут на firewall на неактивное соединение

и так далее
...
Рейтинг: 0 / 0
Рвется соединение с сервером, таймаут 15 минут, как сократить?
    #39414857
SYSokolow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Петров АндрейСитуевина следующая, есть приложение на линуксах, соединяется через оракловый клиент с 11 сервером.
При разрыве соединения без RST пакетов приложение думает что соединение все еще есть, а по факту его уже нет и это длится примерно 15 минут! Куда копать чтобы сократить этот таймаут?
Приложение? (разработка говорит что это не к ним вообще)
Добрый день, коллеги.

Собственно, ситуация та же.
Только на клиенте выставлены следующие параметры:
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_keepalive_probes = 6

и в tnsnames.ora:
(DESCRIPTION= (ENABLE=BROKEN) (CONNECT_TIMEOUT=3)(TRANSPORT_CONNECT_TIMEOUT=2)(RETRY_COUNT=3)
Параметр ENABLE=BROKEN заставляет ораклового клиента работать с keepalives.
Пакеты keepalive ходят - проверено tcpdump'ом.

А таймаут при разрыве соединения с БД все-равно остается на уровне 14-15 минут.
В конце концов приложение ловит ORA-03113, и только после этого переустанавливает соединение.

Как же все-таки заставить клиента детектить обрывы соединения быстрее?
...
Рейтинг: 0 / 0
Рвется соединение с сервером, таймаут 15 минут, как сократить?
    #39414974
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в каком состоянии эти соединения
Код: sql
1.
netstat -an



Случаем не в TIME_WAIT?

Попробовать(на сервере и клиенте):

быструю утилизацию сокетов находящихся в состоянии TIME_WAIT

Код: sql
1.
net.ipv4.tcp_tw_recycle = 1



механизм разрешающий использовать уже существующие сокеты, которые находятся в состоянии TIME_WAIT, если это не повредит безопасности.

Код: sql
1.
net.ipv4.tcp_tw_reuse = 1
...
Рейтинг: 0 / 0
Рвется соединение с сервером, таймаут 15 минут, как сократить?
    #39415011
orac_list
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Петров Андрей,

Копать в сторону DCD (Dead Connection Detection)
...
Рейтинг: 0 / 0
Рвется соединение с сервером, таймаут 15 минут, как сократить?
    #39415246
SYSokolow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
landyА в каком состоянии эти соединения
Случаем не в TIME_WAIT?

К сожалению, не известно. Проблема разбирается постфактум, воспроизвести сложно.

orac_listКопать в сторону DCD (Dead Connection Detection)

DCD включен. На сервере БД sqlnet.expire_time=1, probe-пакеты ходят через каждые 60 сек. Только на клиента это не влияет при сбросе соединения файрволом.

Замечено, что если после сброса соединения приложение делает новый запрос к БД на чтение/запись, то оно относительно быстро ловит exception (до 2 мин.), если же на момент обрыва существует активное соединение (запрос послан, ждем ответа), получаем 15-минутный таймаут.
...
Рейтинг: 0 / 0
Рвется соединение с сервером, таймаут 15 минут, как сократить?
    #39459700
SYSokolow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема - на уровне TCP.
Похоже, 15 минут давал параметр tcp_retries2 (default = 15 , количество попыток ретрансмита).
Изменили tcp_retries2=3, время восстановления соединения теперь в пределах 30 секунд.

Объяснение:
https://access.redhat.com/solutions/726753
--
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Рвется соединение с сервером, таймаут 15 минут, как сократить?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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