Что вызывает ошибки winsock 10055? Как я должен устранить неполадки?

Я изучаю некоторые проблемы с ошибками winsock 10055 в цепочке пользовательских приложений (некоторые из которых мы контролируем, некоторые нет) и надеялся получить несколько советов по методам устранения этой проблемы.

No buffer space available.
    An operation on a socket could not be performed because the system 
    lacked sufficient buffer space or because a queue was full.

Судя по исследованиям, пейджинг и порты с невыгружаемым доступом являются единственными ресурсами, которые могут вызвать эту ошибку. Есть ли другой ресурс, который может вызвать ошибки 10055?

В настоящее время мы настроили счетчики perfmon в приложениях, и использование невыгружаемого пула в большинстве случаев выглядит низким. Открытые соединения TCP выглядят низко, и я не знаю другого способа мониторинга портов.

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

Есть ли какой-либо другой инструмент или процедура, которую вы бы порекомендовали диагностировать, какое приложение вызывает проблему?

ОБНОВИТЬ:

Платформа - Windows Server 2003 x86 с ключом /3G. Для справки, x86 обычно имеет 256 МБ хранилища NPP, а /3G снижает его до 128 МБ. В общем, вы бы хотели избежать этой конфигурации, чтобы избежать проблем с АЭС. ( ссылка)

У нас есть источник для одного приложения. Я написал довольно сложные тесты, пытаясь воспроизвести поведение безрезультатно.

Как уже упоминалось, проблема возникает только в производстве. Таким образом, мониторинг пакетов был исключен. В настоящее время у нас есть настройка счетчиков производительности, которая контролирует NPP, потоки, сетевой трафик и т. Д. Поскольку интервал perfmon равен 1 секунде, в этом окне могут появляться и исчезать микровзрывы. Однако есть некоторые субъективные доказательства того, что это не проблема.

Основная ситуация состоит в том, что другая сторона соединения говорит, что закрыла соединение из-за ошибок с кодом 10055. NPP (и производительность в целом) выглядит стабильно до разъединений, что указывает на какой-то другой ресурс, являющийся причиной.

ОБНОВИТЬ:

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

3 ответа

Нехватка баранов может вызвать это также, согласно поискам Google, среди прочего. Состояние ошибки, которое я наблюдал через Google при обнаружении некоторых из нижеприведенных причин, было связано с нехваткой памяти, когда базовая операционная система имела ограниченный доступ к ОЗУ. Я думаю, что тот же тип проблемы может быть легко воссоздан в виртуальной среде, которая нуждается в оперативной памяти.

Более фундаментальный вопрос по устранению неполадок довольно прост - что отличается от вашей производственной среды?

Вы тестировали приложение в Windows 2003 x64 или Windows 2008?

На 2 часть ваших вопросов..

Следующие инструменты могут быть использованы для устранения неполадок и исправления ошибок Winsock.

Перехватчики:

http://www.wireshark.org/ 

Шайбы:

http://www.sstinc.com/winsock.html
http://www.win-tech.com/html/socktspy.htm

Универсальные инструменты для отслеживания состояния системы и ресурсов

http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
http://technet.microsoft.com/en-us/sysinternals/bb896645

Инструмент для обнаружения вызовов API

http://www.apimonitor.com/
http://www.nektra.com/products/spystudio-api-monitor/

Debuggers

http://www.ollydbg.de/
http://www.immunitysec.com/products-immdbg.shtml

Реверсивные инструменты или декомпиляторы

http://www.hex-rays.com/products/ida/index.shtml
http://www.hex-rays.com/products/decompiler/index.shtml

Ваш стандартный IDE и компилятор

http://www.microsoft.com/visualstudio/en-us

Вот список других инструментов:

http://www.sockets.com/devtools.htm

Другие найденные ссылки:

https://stackoverflow.com/questions/8118870/howto-debug-winsock-api-calls

http://brandon.fuller.name/archives/2007/01/24/19.44.29/

http://tangentsoft.net/ <---- Наверное, лучший

Переустановите с 2008 R2 сервера, это будет работать с надеждой. Существует абсолютно новая архитектура драйверов и улучшенная масштабируемость сети.

Я не знаю, поможет ли это, но я обнаружил ошибку 10055 в приложении, отправляющем широковещательные UDP-сообщения каждые несколько секунд. Это произошло, когда приложение для вещания находилось на ноутбуке, который засыпал и проснулся.

Игнорирование ошибки для нескольких последовательных широковещательных рассылок UDP решило проблему.

Похоже, что WinSock не был полностью восстановлен, когда приложение возобновило вещание после сна.

Другие вопросы по тегам