Автор Тема: bind: Address already in use  (Прочитано 2491 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн mihail_1

  • Местный житель
  • ***
  • Сообщений: 169
bind: Address already in use
« : 17 Сентября 2013, 11:19:27 »
Создаю сокет. Назначаю ему конкретный ip и любой порт. Открываю исходящее соединение, посылаю запрос, получаю ответ, закрываю соединение. И так много много раз во многих потоках. Но вдруг через несколько часов работы получаю:
bind: Address already in use
Как так может быть и как починить?
 

Оффлайн vladimir_ar

Re: bind: Address already in use
« Ответ #1 : 17 Сентября 2013, 15:32:21 »
Очевидно, что его уже кто-то использует. Смотреть - кто. Или Вы сами в какой-то момент по какой-либо причине его не закрыли.
Debian Testing, kernel 3.16-2-amd64, OpenBox
AMD A8-3750 / 16Gb RAM / ATI HD6550D (onboard) / Sound ASUS Xonar - DS
_______________________________
Debian Testing, kernel 3.14-2-amd64, OpenBox
HP-655 AMD E1 / 8Gb RAM / ATI HD7310M
 

Оффлайн mihail_1

  • Местный житель
  • ***
  • Сообщений: 169
Re: bind: Address already in use
« Ответ #2 : 17 Сентября 2013, 15:41:04 »
Использует кого?
IP? Все нити используют один и тот же IP и несколько часов это не мешает.
Порт? Должен автоматически назначаться свободный. Каждый поток одновременно открывает одно соединение, как может быть выделен занятый порт, когда полно свободных?
 

Оффлайн qupl

Re: bind: Address already in use
« Ответ #3 : 17 Сентября 2013, 16:56:29 »
Порт? Должен автоматически назначаться свободный.
Кто кому должен? Какой порт Вы укажете тот и попытается использовать ваша программа. Откуда возьмется "автоматика"?

Оффлайн mihail_1

  • Местный житель
  • ***
  • Сообщений: 169
Re: bind: Address already in use
« Ответ #4 : 17 Сентября 2013, 17:41:21 »
Ну наверное функция bind, своей документации. И делает она это вполне неплохо (как минимум первые несколько часов).
Автоматика вероятно берется где-то в системном вызове, который запросит функция bind, если в качестве номера порта задать 0.
 

Оффлайн qupl

Re: bind: Address already in use
« Ответ #5 : 17 Сентября 2013, 18:21:49 »
И делает она это вполне неплохо (как минимум первые несколько часов).
Пока не закончатся порты из свободного диапазона 1024-5000.

Запустите netstat во вторые полчаса работы.

Оффлайн mihail_1

  • Местный житель
  • ***
  • Сообщений: 169
Re: bind: Address already in use
« Ответ #6 : 17 Сентября 2013, 18:40:31 »
На вторые полчаса я опаздал (прошло уже больше 4 часов):
имею примерно 1500 тысячи соединений с портов приверно с 31000 по 61000 в статусах в основном TIME_WAIT, FIN_WAIT2 b SYN_SENT, немного ESTABLISHED.

Сообщение объединено: 17 Сентября 2013, 18:42:48
И количество TIME_WAIT быстро растет
« Последнее редактирование: 17 Сентября 2013, 18:42:48 от mihail_1 »
 

Оффлайн qupl

Re: bind: Address already in use
« Ответ #7 : 17 Сентября 2013, 18:52:34 »
mihail_1, тут

Оффлайн mihail_1

  • Местный житель
  • ***
  • Сообщений: 169
Re: bind: Address already in use
« Ответ #8 : 17 Сентября 2013, 18:57:55 »
Может ли поток на все свои соединения (последовательные) использовать один сокет или после закрытия соединения он становится непригоден для повторного использования?

Сообщение объединено: 17 Сентября 2013, 21:15:52
SO_REUSEADDR замечательная опция - при ее установке траффик упал в 10 раз.
« Последнее редактирование: 17 Сентября 2013, 21:15:52 от mihail_1 »
 

Оффлайн mihail_1

  • Местный житель
  • ***
  • Сообщений: 169
Re: bind: Address already in use
« Ответ #9 : 19 Сентября 2013, 13:48:22 »


SO_LINGER помогла. Но я не понял что за гнев богов меня ожидает и за что?
 

Теги:
     

    br0 и bind

    Автор Mystique

    Ответов: 2
    Просмотров: 1311
    Последний ответ 24 Сентября 2016, 13:58:59
    от Mystique
    Помогите настроить BIND [Решено]

    Автор Iflex

    Ответов: 13
    Просмотров: 5597
    Последний ответ 14 Декабря 2014, 16:52:27
    от gardarea51
    DNS, Bind

    Автор datol

    Ответов: 4
    Просмотров: 1410
    Последний ответ 05 Августа 2017, 06:42:51
    от gardarea51
    Bind для домашней сети по WiFi

    Автор iormark

    Ответов: 2
    Просмотров: 1915
    Последний ответ 21 Мая 2015, 11:16:36
    от iormark