Возможно вы искали: 'Sonic Ball'

May 15 2025 19:24:33
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » как избежать CLOSE_WAIT (socket)

как избежать CLOSE_WAIT (socket)

Ключевые слова: socket, (найти похожие документы)

_ RU.UNIX (2:5077/15.22) _____________________________________________ RU.UNIX _
From : Anatoly A. Orehovsky 2:5020/400 03 Nov 99 07:54:06
Subj : как избежать CLOSE_WAIT
________________________________________________________________________________
From: tolik@mpeks.tomsk.su (Anatoly A. Orehovsky)

Eugene Crosser (crosser@average.org) wrote:
: Тут такая научная дискуссия по поводу TCP/IP - мне даже страшно
: вставиться со своим вопросом ;) А вопрос простой. Есть TCP-шный
: сервер, к нему обычно подсоединено несколько сессий от клиентов.

А какая у сервера ОС-то ? И клиентские, на всякий случай.

: Теперь, иногда этот сервер нужно бывает перезапустить. У него
: в обработчике SIGINT стоит цикл close() на все клиентские коннекции,
: и exit(). Так вот, не всегда, но довольно часто случается, что

По идее, по exit close должно бы отработать автоматически.

: процесс нормально завершается, клиенты на других машинах кончаются,
: а netstat показывает парочку коннекций в состоянии CLOSE_WAIT, и
: в такой позе они сидят несколько часов, и пока они так сидят, ни
: сервер снова не запустить (EADDRINUSE), и когда клиент пытается
: соединиться, он не получает ECONNREFUSED, а долго-долго ждет пока
: не истечет таймаут на connect. Мешает.

: Вопрос: как избежать такой ситуации? Hу кроме сокращения ядерного
: таймаута на это состояние. И вообще, когда оно возникает? Фраза
: из man netstat "The remote end has shut down, waiting for the
: socket to close" вроде бы мало соответствует действительности -
: сокет-то я давно закрыл. Или нет?

Вообще, в приведенной выдержке из man все правильно - в это состояние
из TCPS_ESTABLISHED или TCPS_SYN_RECEIVED переходит TCP FSM в момент
прихода FIN от peerа. То есть, например, когда клиент попытался
отвалится или зашутдаунил свою передачу раньше, чем сервер коннекцию
попытался закрыть или зашутдаунил передачу со своей стороны.

Hа действительно закрытом сокете, естественно, при правильной
ядреной реализации, этого состояния быть не должно. А был ли exit-то
? А не было ли forkа с висящим на коннекции потомком (очень похоже) ?

А насчет избежания ситуации - можно попробовать setsockopt(2) с SO_REUSE*.

--
Anatoly A. Orehovsky. AO9-RIPE. AAO1-RIPN
http://www.tekmetrics.com/transcript.shtml?pid=6064
--- ifmail v.2.14dev3
* Origin: CISA Ltd. InterNetNews site (2:5020/400)

_ RU.UNIX (2:5077/15.22) _____________________________________________ RU.UNIX _
From : Eugene Crosser 2:5020/400 05 Nov 99 01:12:08
Subj : как избежать CLOSE_WAIT
________________________________________________________________________________
From: crosser@average.org (Eugene Crosser)

In article <7vof22$37v@mpeks.tomsk.su>,
tolik@mpeks.tomsk.su (Anatoly A. Orehovsky) writes:

>: Тут такая научная дискуссия по поводу TCP/IP - мне даже страшно
>: вставиться со своим вопросом ;) А вопрос простой. Есть TCP-шный
>: сервер, к нему обычно подсоединено несколько сессий от клиентов.
>
> А какая у сервера ОС-то ? И клиентские, на всякий случай.

Solaris 2.5.1 и там и там. Что характерно, часто это случается
с соединением на самого себя (но не 127.0.0.1 а через эзернетовский
интерфейс).

>: Теперь, иногда этот сервер нужно бывает перезапустить. У него
>: в обработчике SIGINT стоит цикл close() на все клиентские коннекции,
>: и exit(). Так вот, не всегда, но довольно часто случается, что
>
> По идее, по exit close должно бы отработать автоматически.

Hу это просто на всякий случай.

>: процесс нормально завершается, клиенты на других машинах кончаются,
>: а netstat показывает парочку коннекций в состоянии CLOSE_WAIT, и
>: в такой позе они сидят несколько часов, и пока они так сидят, ни
>: сервер снова не запустить (EADDRINUSE), и когда клиент пытается
>: соединиться, он не получает ECONNREFUSED, а долго-долго ждет пока
>: не истечет таймаут на connect. Мешает.
>
>: Вопрос: как избежать такой ситуации? Hу кроме сокращения ядерного
>: таймаута на это состояние. И вообще, когда оно возникает? Фраза
>: из man netstat "The remote end has shut down, waiting for the
>: socket to close" вроде бы мало соответствует действительности -
>: сокет-то я давно закрыл. Или нет?
>
> Вообще, в приведенной выдержке из man все правильно - в это состояние
> из TCPS_ESTABLISHED или TCPS_SYN_RECEIVED переходит TCP FSM в момент
> прихода FIN от peerа. То есть, например, когда клиент попытался
> отвалится или зашутдаунил свою передачу раньше, чем сервер коннекцию
> попытался закрыть или зашутдаунил передачу со своей стороны.

То-то и оно, что процесса сервера давно уже нет, стало быть коннекцию
от заведомо закрыл (сам или при exit).

> Hа действительно закрытом сокете, естественно, при правильной
> ядреной реализации, этого состояния быть не должно. А был ли exit-то
> ? А не было ли forkа с висящим на коннекции потомком (очень похоже) ?

Hе, никаких потомков, там один процесс, читает сокеты через select.
Правда, есть потомки не имеющие отношения к сокету, но они все тоже
умирают после смерти отца, проверено. Вроде... А если нет, то может
в этом быть дело, да? Потомок ведь мог унаследовать открытый сокет,
а специально я его, кажется, не закрываю... И если потомок не умер,
может держать адрес. Hужно проверить.

> А насчет избежания ситуации - можно попробовать setsockopt(2) с SO_REUSE*.

Это само собой. Без него оно вообще каждый раз случается, а с ним -
только иногда.

Eugene
--- ifmail v.2.14dev3
* Origin: Average (2:5020/400)

_ RU.UNIX (2:5077/15.22) _____________________________________________ RU.UNIX _
From : Anatoly A. Orehovsky 2:5020/400 05 Nov 99 07:37:52
Subj : как избежать CLOSE_WAIT
________________________________________________________________________________
From: tolik@mpeks.tomsk.su (Anatoly A. Orehovsky)

Eugene Crosser (crosser@average.org) wrote:
: In article <7vof22$37v@mpeks.tomsk.su>,
: tolik@mpeks.tomsk.su (Anatoly A. Orehovsky) writes:

: > Hа действительно закрытом сокете, естественно, при правильной
: > ядреной реализации, этого состояния быть не должно. А был ли exit-то
: > ? А не было ли forkа с висящим на коннекции потомком (очень похоже) ?

: Hе, никаких потомков, там один процесс, читает сокеты через select.
: Правда, есть потомки не имеющие отношения к сокету, но они все тоже
: умирают после смерти отца, проверено. Вроде... А если нет, то может
: в этом быть дело, да? Потомок ведь мог унаследовать открытый сокет,
: а специально я его, кажется, не закрываю... И если потомок не умер,
: может держать адрес. Hужно проверить.

Проверить надо обязательно. И сообщить о результатах, если не трудно.

Конечно, потомок унаследует все открытые файловые дескрипторы. И
обязан тут же их закрыть, если они ему не нужны. Если потомок тут
же делает exec*(2,3), то можно обойтись и флагом close-on-exec
(fcntl(2)).

Гляньте по тексту - если у Вас потомок может образоваться ПОСЛЕ
того, как клиент закрыл свою сторону коннекции, но ДО того, как
сервер закрыл свою, пожалуй, может и получиться висячий CLOSE_WAIT.

Во всяком случае, во FreeBSD CLOSE_WAIT нет проблем достичь именно таким
образом. Да, а при коннекте на самогО себя не болтается ли при этом еще и
остаток соединения на порт сервера в состоянии FIN_WAIT_2 ? Должно
болтаться.

А потомок может быть плохо виден из-за execов (особенно, с setsid(2)),
например. Я не в курсе, можно ли найти владельца CLOSE_WAIT в solaris, как
во FreeBSD sockstat или netstat -Afinet; fstat ?

Кстати, а на чем основывается Ваша уверенность в смерти потомков
после смерти родителя ? Вы используете какой-то метод IPC или
мониторите родителя потомками ? А если родитель аварийно завершился
? Или потомок делал fork(2) и/или exec*(2,3) ?

: > А насчет избежания ситуации - можно попробовать setsockopt(2) с SO_REUSE*.

: Это само собой. Без него оно вообще каждый раз случается, а с ним -
: только иногда.

Странно, что и с этими опциями случается. Или Вы используете
SO_REUSEADDR ? Hадежнее SO_REUSEPORT. Хотя, при ТОЛЬКО CLOSE_WAIT
сокетах это играть не должно. Hе знаю, правда, насчет solaris.

Да, а что - "оно" ? EADDRINUSE ? Или CLOSE_WAIT ?

Кстати, еще один аргумент в пользу висячих потомков. К тому же, не
может ли случиться такое, что потомок-таки тоже порт слушать пытается
или просто забинженый держит ? Тогда бы объяснилось EADDRINUSE при
CLOSE_WAIT и SO_REUSEADDR.

--
Anatoly A. Orehovsky. AO9-RIPE. AAO1-RIPN
http://www.tekmetrics.com/transcript.shtml?pid=6064
--- ifmail v.2.14dev3
* Origin: CISA Ltd. InterNetNews site (2:5020/400)

896 Прочтений •  [как избежать CLOSE_WAIT (socket)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• как избежать CLOSE_WAIT (socket) Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка