У меня есть приложение ASP.NET, работающее на Windows Server 2008 R2, размещенное на серверах Rackspace. Вдруг что-то пошло не так. Все мои приложения работают нормально, за исключением страниц, вызывающих сторонние веб-службы (другими словами, доступ в Интернет). я получаю An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full
. Когда я вхожу на сервер через удаленный рабочий стол и получаю доступ к Интернету, он показывает мне «Ошибка подключения».
Статистика 22 декабря 2015,
CLOSE_WAIT 5
ESTABLISHED 146
TIME_WAIT 646750
LAST_ACK 1
LISTENING 30
У вас только что закончился TCB (т.е. TCP дескрипторы)
Причина может быть любой, например:
Утечки порта на любом коммерческом программном обеспечении, которое вы используете -> Решение: проверьте, какое программное обеспечение вы используете, и примените все доступные исправления. Атака из-за истощения портов -> Решение: спросите своего хостинг-провайдера, если у вас ненормальный уровень трафика. Утечки портов в любом развернутом специализированном программном обеспечении -> Решение: попросите своих разработчиков проверить, выпускают ли они TCB после закрытия TCP-соединений.
Состояние time_wait возникает после закрытия TCP-соединения. Компьютер будет держать порт в наполовину закрытый (sic) состояние в случае наличия задержанных пакетов. Он должен оставаться в этом состоянии в течение времени, определенного как 2xMSL (в два раза больше максимальной длины сегмента), которое по умолчанию имеет значение 400 мс (2x200 мс). В вашем случае вы либо получаете слишком много подключений быстрее, чем они полностью закрыты (и освобождаются), либо по какой-то причине они вообще не освобождаются.
Поскольку Rackspace является управляемым хостингом, я бы порекомендовал вам попросить их войти в систему через порт ILO / DRAC и перезагрузить компьютер, если вы просто хотите двигаться.
Используйте эту команду, чтобы найти виновный исполняемый файл
netstat -nbt
Убейте этот exe или остановите службу, и все готово