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

Что вызывает ошибки 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. АЭС (и производительность в целом) выглядит стабильной до отключения, что указывает на то, что причиной был какой-то другой ресурс.

ОБНОВИТЬ:

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

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

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

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

По второй части ваших вопросов ..

Следующие инструменты можно использовать для устранения неполадок и исправления ошибок 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/

Отладчики

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 не был полностью восстановлен, когда приложение перезапустило трансляцию после сна.