| Предыдущий | Следующий |
| WSAEINVAL | WSAEWOULDBLOCK |
WSAEMFILE
WSAEMFILE означает, что Winsock не смог предоставить ещё один дескриптор сокета. Ограничение может быть глобальным, процессным или потоковым в зависимости от поставщика и среды, поэтому это сигнал исчерпания ресурсов, а не доказательство недоступности сети.
Типичные причины
Обычная причина — утечка: принятые соединения, неудачные попытки подключения, объекты событий или дублированные дескрипторы сокетов создаются быстрее, чем освобождаются. Всплеск законных соединений также может выявить архитектуру без управления допуском, тайм-аутов простоя или зарезервированной ёмкости для пути accept.
Что измерить
- Отслеживайте создание сокетов, успешное и неудачное закрытие и число живых дескрипторов по ролям соединений.
- Отделяйте исчерпание слушателя от утечки на клиента; ошибка accept может возникнуть уже после постановки соединения в очередь.
- Применяйте противодавление и ограниченные очереди до увеличения лимитов, иначе процесс лишь позже откажет под той же нагрузкой.
Microsoft: accept · Microsoft: коды ошибок Winsock · The Open Group: дескрипторы сокетов
Нужно найти другой код? Найти другой код состояния или ошибки.
