Большие ожидания на клиентах при FAILOVER

Осенев
Дата: 05.08.2005 15:19:41
У клиентов прописано

INS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = ip2)(PORT = 1521))
(LOAD_BALANCE = NO)
(FAILOVER = YES)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = SID)
(FAILOVER_MODE = (TYPE = SESSION)(METHOD = BASIC))
)
)

Когда первый сервак умирает и не доступен, клиент ждет по 20-30 сек чтоб подключится ко второму. Я так понял что это связано с настройками TCP OS. Лечится ли это, и какой это параметр настройки TCP на windows2000?
Bely
Дата: 05.08.2005 15:26:04
Осенев
У клиентов прописано
Когда первый сервак умирает и не доступен, клиент ждет по 20-30 сек чтоб подключится ко второму. Я так понял что это связано с настройками TCP OS. Лечится ли это, и какой это параметр настройки TCP на windows2000?
20-30 сек - это TCP timeout.
т.е. максимальное время ожидание квитирующих пакетов, после чего соединение считается разорваным или не установленным (при открытии соединения).
Ожидание возникает если TCP пакет был послан, а в ответ не вернулось ничего.

может где и можно поменять, но не советую...
Лучше придумать какой-нибудь другой способ.
Whateva
Дата: 05.08.2005 15:49:59
А с виртуальными хостами не пробовали?
eugeny nemo
Дата: 05.08.2005 17:41:59
Осенев
Когда первый сервак умирает и не доступен, клиент ждет по 20-30 сек чтоб подключится ко второму. Я так понял что это связано с настройками TCP OS. Лечится ли это, и какой это параметр настройки TCP на windows2000?


Из доки:

RETRIES - Specify the number of times to attempt to connect after a failover. If DELAY is specified, RETRIES defaults to five retry attempts.
DELAY - Specify the amount of time in seconds to wait between connect attempts. If RETRIES is specified, DELAY defaults to one second.


насколько я понимаю, tcp timeout происходит на каждой попытке, и если снизить количество RETRIES, то таким образом можно уменьшить время ожидания.
Осенев
Дата: 05.08.2005 18:05:09
eugeny nemo

насколько я понимаю, tcp timeout происходит на каждой попытке, и если снизить количество RETRIES, то таким образом можно уменьшить время ожидания.

Да действительно, надо попробовать, спасибо за подсказку.

Вот похоже это тот параметер (требуется рестарт):

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

TcpMaxConnectRetransmissions
      Value Type: REG_DWORD - Number
      Valid Range: 0 - 0xFFFFFFFF
      Default: 3
      Description: This parameter determines the
      number of times TCP will retransmit a connect
      request (SYN) before aborting the attempt.
      The retransmission timeout is doubled with
      each successive retransmission in a given
      connect attempt. The initial timeout value is
      three seconds.
Alex Roudnev
Дата: 05.08.2005 23:48:13
Попробуй прописать там преконнектед метод вместо базового. В доках должно быть описано, как это сделать.

А так у тебя совершенно нормальный таймаут.



Осенев
У клиентов прописано

INS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = ip2)(PORT = 1521))
(LOAD_BALANCE = NO)
(FAILOVER = YES)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = SID)
(FAILOVER_MODE = (TYPE = SESSION)(METHOD = BASIC))
)
)

Когда первый сервак умирает и не доступен, клиент ждет по 20-30 сек чтоб подключится ко второму. Я так понял что это связано с настройками TCP OS. Лечится ли это, и какой это параметр настройки TCP на windows2000?
Biz©
Дата: 06.08.2005 11:07:46
уточните которая версия оракела и пчему именно сешн-метод требуется ...
eugeny nemo
Дата: 06.08.2005 13:31:23
Alex Roudnev
Попробуй прописать там преконнектед метод вместо базового. В доках должно быть описано, как это сделать.

мне кажется, что это не поможет. клиент всё равно должен понять, что первое соединение умерло, а на это в случае полной сетевой недоступности сервера требуется время.
Biz©
Дата: 07.08.2005 11:02:58
если очень критично, то переходите на 10g ...