Назад | Перейти на главную страницу

Ошибки WSAENOBUFS при выполнении HTTP-подключений в Windows Server 2008 x64

Мы пытаемся перенести большое количество файлов из общего сетевого ресурса в Openstack с помощью специально написанного приложения на Erlang (с использованием Erlang версии R15B).

После передачи около 20 тыс. Файлов процесс Erlang начинает возвращать ошибки enobufs, в результате чего он не может установить HTTP-соединения с OpenStack. Кроме того, код C #, запущенный на том же самом компьютере, больше не может открывать сокеты, что приводит к ошибкам, обнаруженным в вопрос о нехватке достаточного буферного пространства. Закрытие всех кастомных приложений и перезапуск не улучшают ситуацию.

Количество открытых подключений никогда не превышает 300, но обычно попадает в диапазон 2k при включении TIME_WAIT. Соединения не остаются открытыми, но быстро открываются и закрываются.

Все статьи, которые я смог найти, похоже, упоминают этот «эфемерный» лимит портов, но не похоже, что мы достигли этого, и закрытие приложения Erlang не приводит к каким-либо улучшениям.

Есть ли что-то еще, что может удерживать буферное пространство и не освобождать его должным образом?

Одна из функций приложения - разговаривать с местной службой. Похоже, это вызвало утечка сокета ядра в Server 2008, где он не выпускал бы сокеты должным образом. Проблема была решена с помощью исправления, упомянутого в статье поддержки.