В моем сценарии я запустил скрипт, который несколько раз планирует файлы, мое приложение выполняет некоторые вычисления и отправляет ответ клиенту, т.е. клиент делает повторяющийся HTTP-вызов для получения ответа на каждый файл. Когда около 150 файлов являются запланированными портами сокетов в мой сервер переходит в состояние time_wait, и их число превышает тысячи, и в клиенте создается исключение, которое открывает http-соединение, например
Error : [Errno 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted
В результате мое приложение зависло. Я не знаю, возможно, потоки перешли в состояние ожидания или что произошло, но мне нужно завершить все процессы или перезапустить приложение, чтобы оно снова заработало.
Я попытался сократить время ожидания до 30 секунд, поскольку по умолчанию оно составляет 240 секунд, но оно не работает.
Можно ли как-нибудь использовать те порты, которые перешли в состояние ожидания?
Будет ли это свойство иметь какое-либо значение, если я добавлю его в код клиента при открытии http-соединения?
http.DefaultTransport.(*http.Transport).MaxIdleConnsPerHost = numCoroutines
взяла ссылку от этот ответ
Имейте очень меньшее представление о сокетах. Пожалуйста, руководство!