isql TimeOut Connect

Администирование клиентской и серверной части InterBase, Firebird, Yaffil. Настройка файла конфигурации и т.п.

Модераторы: kdv, Alexey Kovyazin

Ответить
serj77
Сообщения: 5
Зарегистрирован: 29 дек 2007, 13:06

isql TimeOut Connect

Сообщение serj77 » 03 фев 2009, 09:45

может этот вопрос не по теме, но все же, при попытке конекта к удаленному серверу isql долго ждет чтоб сказать что хост не отвечает, подскажите где выставляется таймоуты чтоб не долго не ждать.
FB 1.5
Linux Suse 11.1

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Re: isql TimeOut Connect

Сообщение Dimitry Sibiryakov » 03 фев 2009, 13:02

firebird.conf

serj77
Сообщения: 5
Зарегистрирован: 29 дек 2007, 13:06

Re: isql TimeOut Connect

Сообщение serj77 » 03 фев 2009, 17:56

т.е. ты хочешь сказать что isql берет локальные натройки сервера при коннекте к удаленному серверу?
а если локально сервера нет, а есть только утилиты?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: isql TimeOut Connect

Сообщение kdv » 03 фев 2009, 19:49

вообще нигде это не выставить. Потому что до тех пор пока соединение не состоялось или не обломилось с коннектом, за таймаут отвечает сетевая подсистема операционной системы.
Например, чтобы найти ip по имени, ОС должна сначала зарезолвить имя в DNS. А если DNS недоступен, то она будет к нему стучаться пока не получит облом. И т.д. То есть, FB тут ни при чем вообще.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Re: isql TimeOut Connect

Сообщение Dimitry Sibiryakov » 04 фев 2009, 16:09

serj77 писал(а):т.е. ты хочешь сказать что isql берет локальные натройки сервера при коннекте к удаленному серверу?
а если локально сервера нет, а есть только утилиты?
При чём тут isql? Настройки из firebird.conf берёт fbclient. Или у тебя и его локально нет, а утилиты для доступа к серверу используют телепатию?.. :lol:

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: isql TimeOut Connect

Сообщение kdv » 04 фев 2009, 17:29

о каких "локальных настройках" речь, и какие параметры коннекта к серверу может взять fbclient из firebird.conf?
ну, допустим, номер порта, и то если на сервере порт изменен на другой.
НИКАКИХ настроек таймаута соединения в firebird.conf нет. И на клиенте этот файл нафиг не нужен, по большому счету.

Дим, ты прочитай вопрос исходный еще раз. У него или ФБ вырублен, или закрыт firewall-ом, или ДНС не настроен на клиенте, и клиент не видит сервера по имени. ЭТОТ таймаут если и можно настроить, то в операционке. В виндах - либо в реестре руками, если такая настройка там вообще есть.

Или ты хочешь сказать, что ConnectionTimeout на это влияет, и если мы поставим 30, то если сервак недоступен, то клиент отвалится через 30 секунд?

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: isql TimeOut Connect

Сообщение hvlad » 04 фев 2009, 17:43

kdv писал(а):Или ты хочешь сказать, что ConnectionTimeout на это влияет, и если мы поставим 30, то если сервак недоступен, то клиент отвалится через 30 секунд?
Если дело дошло до вызова select, то да, отвалится через 30 сек.
Например сервер ТАК занят, что не смог ответить за 30 сек. Или его ответ не пришёл за 30 сек. И т.п.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: isql TimeOut Connect

Сообщение kdv » 04 фев 2009, 17:44

речь то про коннект.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: isql TimeOut Connect

Сообщение hvlad » 05 фев 2009, 00:14

kdv писал(а):речь то про коннект.
RTFM: socket, select

:wink:

serj77
Сообщения: 5
Зарегистрирован: 29 дек 2007, 13:06

Re: isql TimeOut Connect

Сообщение serj77 » 05 фев 2009, 12:03

hvlad писал(а):
kdv писал(а):речь то про коннект.
RTFM: socket, select

:wink:
Во во, упоминание об этом в инете где то видел но только упоминание. А можно по подробнее пожалуйста локально система Suse, удаленный комп не имеет значения т.к. он выключен к примеру. Обьясню для чего чтоб понятней было, у меня 15 удаленных серверв и я скриптом разкладываю всякие изменения, и если где нить сервер выключен (бывает такое), чтоб isql не ждал 5 минут пока тайм аут не выйдет, а сократить время ожидания до минуты примерно [-o<
Спасибо.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Re: isql TimeOut Connect

Сообщение Dimitry Sibiryakov » 05 фев 2009, 13:26

kdv писал(а):Или ты хочешь сказать, что ConnectionTimeout на это влияет, и если мы поставим 30, то если сервак недоступен, то клиент отвалится через 30 секунд?
Ну, либо так, либо его описание врёт, как и сообщения в firebird-support:
firebird.conf писал(а):# ----------------------------
# Client Connection Settings (Basic)
#
# Seconds to wait before concluding an attempt to connect has failed.
#
# Type: integer
#
#ConnectionTimeout = 180
Помнится, и на sql.ru был топик в котором говорилось, что это именно таймаут коннекта, а не предельное время ожидания выполнения запроса.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: isql TimeOut Connect

Сообщение hvlad » 05 фев 2009, 16:38

Для тех, кто не понимает что такое socket api :)

Когда устанавливается TCP\IP соединение, клиент делает достаточно много вызовов. Это и создание локального сокета (socket), и ресолвинг имени сервера в адрес (gethostbyname), и установление соединения (connect) и т.д. Ни один из них не имеет тайм-аута.
Сразу после установления физического соединения, клиент и сервер обмениваются пакетами (аутентификация и прочее).
select - это вызов socket API, который, грубо говоря, ожидает появления данных в сокете.
Так вот ConnectionTimeout - это таймаут именно этого вызова select.

При нормально работающей сети, никакой другой вызов не должен тормозить.
Чаще всего тормозит gethostbyname из-за криво настроенного DNS.

Делать коннект асинхронно, для того чтобы таймаут работал и в кривом окружении, не входит в наши ближайшие планы.
Кому жмёт - делает это в своём приложении.

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Re: isql TimeOut Connect

Сообщение Attid » 07 фев 2009, 14:54

serj77 писал(а): у меня 15 удаленных серверв и я скриптом разкладываю всякие изменения, и если где нить сервер выключен (бывает такое), чтоб isql не ждал 5 минут пока тайм аут не выйдет, а сократить время ожидания до минуты примерно [-o<
Спасибо.
поправь скрипт пусть пингует сервер перед раздачей

Код: Выделить всё

if ping -c 2 $ip_1
    then
    :
    else

Ответить