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