ALT Linux sysadmins discussion
 help / color / mirror / Atom feed
* [Sysadmins] q: tcp timeout
@ 2007-05-15 20:42 Michael Shigorin
  2007-05-16  4:37 ` Хихин Руслан
  0 siblings, 1 reply; 6+ messages in thread
From: Michael Shigorin @ 2007-05-15 20:42 UTC (permalink / raw)
  To: sysadmins

	Здравствуйте.
Если кто помнит лучше -- мож подскажете человеку?

http://www.linux.kiev.ua/ru/forum/?view=single_thread&cat_uid=20&conf_uid=29&thread_uid=699

--- Дмитрий Черкасов
Помогите с такой проблемой. Есть необходимость уменьшить таймаут
для TCP соединения. Это необходимо для того, чтобы клиент
подключенный к SQL серверу при проблемах с сетевым оборудованием
не "висел" на запросе а реконнектился на другой сервер. В клиенте
видно, что он стоит на select() с таймаутом 0, т.е., насколько я
понимаю, это будет до тех пор пока TCP соединение находится в
состоянии ESTABLISHED. Где что подправить, или хотя бы почитать
про то, как эту величину уменьшить. Сеть локальная, время ответа
на запрос тоже вообщем-то небольшое. Тяжелых запросов - нет.
Поэтому хотелось бы чтобы таймаут был где то секунд 30...
Дистрибутив ALT Linux. Значение tcp_retries2 меняли без особого
успеха.

--- Michael Shigorin
Давайте лучше в sysadmins@.

Смутно припоминается, что когда-то Бутенко уламывал Кузнецова
уменьшить в ядре штатные (или они же единственные?) значения
что-то с трёх суток, положенных по стандарту, до чего-то
разумного, что стандарту ещё не очень противоречило -- как раз в
подобном случае.

Если помню правильно, то может потребоваться всё-таки делать
микропатчик и собирать своё ядро.

---

(там требуется регистрация для постинга, посему может быть проще
ответить здесь и Cc: dmytro.cherkasov/gmail.com)

-- 
 ---- WBR, Michael Shigorin <mike@altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Sysadmins] q: tcp timeout
  2007-05-15 20:42 [Sysadmins] q: tcp timeout Michael Shigorin
@ 2007-05-16  4:37 ` Хихин Руслан
  2007-05-16  5:12   ` Sergey
    0 siblings, 2 replies; 6+ messages in thread
From: Хихин Руслан @ 2007-05-16  4:37 UTC (permalink / raw)
  To: sysadmins

[-- Attachment #1: Type: text/plain, Size: 2312 bytes --]

Здравствуйте Michael Shigorin
  В сообщении от 16 мая 2007 Michael Shigorin написал(a):
 > 	Здравствуйте.
 >
 > Если кто помнит лучше -- мож подскажете человеку?
 >
 >
 >
 > http://www.linux.kiev.ua/ru/forum/?view=single_thread&cat_uid=20&con
 >f_uid=29&thread_uid=699
 >
 >
 >
 > --- Дмитрий Черкасов
 >
 > Помогите с такой проблемой. Есть необходимость уменьшить таймаут
 >
 > для TCP соединения. Это необходимо для того, чтобы клиент
 >
 > подключенный к SQL серверу при проблемах с сетевым оборудованием
 >
 > не "висел" на запросе а реконнектился на другой сервер. В клиенте
 >
 > видно, что он стоит на select() с таймаутом 0, т.е., насколько я
 >
 > понимаю, это будет до тех пор пока TCP соединение находится в
 >
 > состоянии ESTABLISHED. Где что подправить, или хотя бы почитать
 >
 > про то, как эту величину уменьшить. Сеть локальная, время ответа
 >
 > на запрос тоже вообщем-то небольшое. Тяжелых запросов - нет.
 >
 > Поэтому хотелось бы чтобы таймаут был где то секунд 30...
 >
 > Дистрибутив ALT Linux. Значение tcp_retries2 меняли без особого
 >
 > успеха.
 >
 >
 >
 > --- Michael Shigorin
 >
 > Давайте лучше в sysadmins@.
 >
 >
 >
 > Смутно припоминается, что когда-то Бутенко уламывал Кузнецова
 > уменьшить в ядре штатные (или они же единственные?) значения
 > что-то с трёх суток, положенных по стандарту, до чего-то
 > разумного, что стандарту ещё не очень противоречило -- как раз в
 > подобном случае.
 >
 >
 >
 > Если помню правильно, то может потребоваться всё-таки делать
 > микропатчик и собирать своё ядро.
 >
 >
 >
 > ---
 > (там требуется регистрация для постинга, посему может быть проще
 >
 > ответить здесь и Cc: dmytro.cherkasov/gmail.com)

Вроде это где-то в коде вкомпилено. Наверное, было верно для Diul-up, но 
на быстрых сетях и сетях с резервированием серверов только мешает. 
На работе с этим сталкивался, но т.к. у нас там основной дистрибутив - 
MCBC и код не поменяешь (и там не 30 секунд, а гораздо больше), то шли 
обходным путём - в fork`e висит процесс, который подкляючается к 
серверу и сразу отключается, если подключение не удалось, то 
прерывается основной процесс (если висит) и перенаправляется на 
резервный сервер.

-- 
  А ещё говорят так  (fortune):
 
________________________________________________________________________
С уважением Хихин Руслан

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Sysadmins] q: tcp timeout
  2007-05-16  4:37 ` Хихин Руслан
@ 2007-05-16  5:12   ` Sergey
    1 sibling, 0 replies; 6+ messages in thread
From: Sergey @ 2007-05-16  5:12 UTC (permalink / raw)
  To: ALT Linux sysadmin discuss

On Wednesday 16 May 2007, Хихин Руслан wrote:

> (и там не 30 секунд, а гораздо больше)

Если не ошибаюсь, 10-15 минут где-то...

-- 
С уважением, Сергей
a_s_y@sama.ru


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Sysadmins] q: tcp timeout
  @ 2007-05-16 19:18     ` Хихин Руслан
    2007-05-16 20:41     ` Хихин Руслан
  1 sibling, 1 reply; 6+ messages in thread
From: Хихин Руслан @ 2007-05-16 19:18 UTC (permalink / raw)
  To: sysadmins

[-- Attachment #1: Type: text/plain, Size: 668 bytes --]

Здравствуйте Dmytro Cherkasov
  В сообщении от 16 мая 2007 Dmytro Cherkasov написал(a):
 > Вот что я спросить хочу... Есть мысль, переписать клиента с открытем
 > сокета с опцией SO_RCVTIMEO. Это сильно неправильное решение будет ?
 > Учитывая, что это опция на сокет часто помечена как
 > недокументированная.

Если честно, я не так глубоко знаю сетевые протоколы :)
И встречный вопрос - а где про эту опцию можно прочесть ?

PS Конечно есть google (и я сейчас попробую спросить его :) ), но иногда 
не хватает времени найти :)
 

-- 
  А ещё говорят так  (fortune):
 
________________________________________________________________________
С уважением Хихин Руслан

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Sysadmins] q: tcp timeout
    2007-05-16 19:18     ` Хихин Руслан
@ 2007-05-16 20:41     ` Хихин Руслан
  1 sibling, 0 replies; 6+ messages in thread
From: Хихин Руслан @ 2007-05-16 20:41 UTC (permalink / raw)
  To: sysadmins

[-- Attachment #1: Type: text/plain, Size: 1905 bytes --]

Здравствуйте Dmytro Cherkasov

 >  Это я задавал вопрос. Красивое решение, но нам не очень подходит, в
 > силу
 >
 > ряда причин. Вот что я спросить хочу... Есть мысль, переписать
 > клиента с
 >
 > открытем сокета с опцией SO_RCVTIMEO. Это сильно неправильное
 > решение будет
 >
 > ? Учитывая, что это опция на сокет часто помечена как
 > недокументированная.

Нашел по манам :)

SVr4, 4.4BSD (эти системные вызовы впервые появились в 4.2BSD). SVr4 
документирует дополнительные коды ошибок ENOMEM и ENOSR, но не 
документирует флаг4.4BSD 4.4BSD и SO_SNDLOWAT, SO_RCVLOWAT, 
SO_SNDTIMEO, SO_RCVTIMEO. 

Т.е как я понял в 4.4BSD документировано, в SVr4 -нет, посмотрел по 
исходникам ядра - вроде вызывается do_set_sock_timeout, да и в 
man 7 socket :

	SO_RCVTIMEO and SO_SNDTIMEO
Specify the receiving or sending timeouts until reporting an error.  The
parameter  is  a  struct timeval.  If an input or output function blocks
for this period of time, and data has been sent or received, the  return
value  of  that  function  will be the amount of data transferred; if no
data has been transferred and the timeout has been reached  then  -1  is
returned  with  errno set to EAGAIN or EWOULDBLOCK just as if the socket
was specified to be nonblocking.  If the timeout is  set  to  zero  (the
 default) then the operation will never timeout.

А вот на практике не пробовал :)

да и http://linux-admin.net.ru/content/572
   
 SO_RCVTIMEO и SO_SNDTIMEO
              Указать время ожидания (при  передаче  или  приеме)
              сообщения  об  ошибке.  Значения этих опций в Linux
              зависят от протокола и не могут быть  записаны  или
              считаны. Их функциональность может быть эмулирована
              с помощью alarm(2) или setitimer(2).


-- 
  А ещё говорят так  (fortune):
 
________________________________________________________________________
С уважением Хихин Руслан

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Sysadmins] q: tcp timeout
  @ 2007-05-17 18:38         ` Хихин Руслан
  0 siblings, 0 replies; 6+ messages in thread
From: Хихин Руслан @ 2007-05-17 18:38 UTC (permalink / raw)
  To: sysadmins

[-- Attachment #1: Type: text/plain, Size: 278 bytes --]

Здравствуйте Dmytro Cherkasov
  
Тут ещё одно решение подсказали :
Использовать неблокируемый сокет  -через fctnl(.... F_SETFL, O_NONBLOCK)


-- 
  А ещё говорят так  (fortune):
 
________________________________________________________________________
С уважением Хихин Руслан

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2007-05-17 18:38 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-05-15 20:42 [Sysadmins] q: tcp timeout Michael Shigorin
2007-05-16  4:37 ` Хихин Руслан
2007-05-16  5:12   ` Sergey
2007-05-16 19:18     ` Хихин Руслан
2007-05-17 18:38         ` Хихин Руслан
2007-05-16 20:41     ` Хихин Руслан

ALT Linux sysadmins discussion

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/sysadmins/0 sysadmins/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 sysadmins sysadmins/ http://lore.altlinux.org/sysadmins \
		sysadmins@lists.altlinux.org sysadmins@lists.altlinux.ru sysadmins@lists.altlinux.com
	public-inbox-index sysadmins

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.sysadmins


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git