Eiffel Web Framework, приложение, запущенное в Linux, вызывает «Адрес уже используется: поднят IO_FAILURE»

После остановки приложения EWF и его повторного запуска с уже используемым адресом: c_bind Address already in use: IO_FAILURE raised

введите здесь описание изображения

Как объясняется здесь, кажется, что время ожидания сокета TCP недоступно в течение некоторого времени, прежде чем оно будет выпущено ОС.


person Pipo    schedule 26.12.2018    source источник


Ответы (1)


Лучший обходной путь, который я нашел, это

sudo sh -c 'echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle'

Кредиты на этот ответ

Я считаю, что идея недоступности сокета для программы заключается в том, чтобы позволить любым сегментам данных TCP, которые все еще находятся в пути, поступать и отбрасываться ядром. То есть приложение может вызвать close(2) для сокета, но задержки или сбои маршрутизации для управления пакетами или что-то еще может позволить другой стороне TCP-соединения некоторое время отправлять данные. Приложение сообщило, что больше не хочет иметь дело с сегментами данных TCP, поэтому ядро ​​должно просто отбрасывать их по мере поступления.

менял вещи. Второму открывателю потребовалось всего около 3 секунд, чтобы получить новый сокет.

person Pipo    schedule 26.12.2018