O que causa o winsock 10055 erros? Como devo resolver problemas?

5

Estou investigando alguns problemas com erros do winsock 10055 em uma cadeia de aplicativos personalizados (alguns dos quais nós controlamos, outros não) e esperávamos obter alguns conselhos sobre técnicas para solucionar o problema.

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.

Da pesquisa, o pool não paginado e as portas parecem ser os únicos recursos que podem causar esse erro. Existe outro recurso que pode causar erros 10055?

Atualmente, temos a configuração dos contadores de perfmon nos aplicativos e o uso do pool não paginado parece baixo na maioria das circunstâncias. Conexões TCP abertas parecem baixas e não tenho conhecimento de outra maneira de monitorar as portas.

Como isso ocorre apenas na produção, não podemos usar mais contadores invasivos. Embora ainda seja interessante ouvir outras soluções. Tenho certeza de que outras pessoas poderiam usar as informações.

Existe alguma outra ferramenta ou procedimento que você recomendaria para diagnosticar qual aplicativo está causando o problema?

ATUALIZAÇÃO:

A plataforma é o Windows Server 2003 x86 com o comutador / 3G. Para referência, x86 geralmente tem 256mb de armazenamento de NPP, / 3G reduz para 128mb. Em geral, você desejaria evitar essa configuração para evitar problemas de NPP. ( referência )

Temos fonte para um aplicativo. Escrevi arreios de testes bastante elaborados tentando reproduzir o comportamento sem sucesso.

Como mencionado, o problema só acontece na produção. Como tal, o monitoramento de pacotes foi evitado. Atualmente, temos a configuração de contadores de desempenho que monitora NPP, threads, tráfego de rede, etc. Como o intervalo do perfmon é 1sec, você poderia ter microbursts que entram e saem dentro dessa janela. Há evidências subjetivas de que esse não é o problema, no entanto.

A situação básica é que o outro lado da conexão diz que fechou a conexão devido a erros com 10055 como o código. O NPP (e o desempenho em geral) parece estável antes das desconexões, o que indica que algum outro recurso é a causa.

ATUALIZAÇÃO:

Eu também reitero que as perguntas originais dizem respeito ao diagnóstico, e não a soluções. Eu ainda não tenho uma resposta clara sobre o que causa erros 10055. Verificar os drivers e o hardware e reinstalar os sistemas operacionais é ótimo, mas evita a pergunta original.

    
por Tom Kerr 16.06.2012 / 00:52

3 respostas

2

A escassez de ram pode causar isso também, de acordo com as pesquisas do Google, entre outras coisas. Uma condição de erro que observei através do Google em encontrar alguns dos problemas abaixo foi a falta de memória, onde o sistema operacional base tinha pouco acesso à memória RAM. Meu palpite é que o mesmo tipo de problema poderia ser facilmente recriado em um ambiente virtual que é carente de memória RAM.

Uma questão de solução de problemas mais básica é bem simples - o que é diferente em seu ambiente de produção?

Você testou o aplicativo no Windows 2003 x64 ou no Windows 2008?

Na segunda parte das suas perguntas.

As ferramentas a seguir podem ser usadas para solucionar problemas e corrigir erros de Winsock.

Sniffers:

http://www.wireshark.org/ 

Calços:

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

Ferramentas para fins gerais para rastrear o status e os recursos do sistema

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

Ferramenta para detectar as chamadas da API

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

Depuradores

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

Ferramentas de reversão ou descompiladores

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

Seu IDE e compilador padrão

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

Aqui está uma lista de outras ferramentas:

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

Outras referências encontradas:

link

link

link < ---- Provavelmente o melhor

    
por 23.06.2012 / 19:55
1

Reinstale com o servidor 2008 R2, isso funcionará esperançosamente. Há uma arquitetura de driver absolutamente nova e uma melhor escalabilidade de rede.

    
por 23.06.2012 / 19:35
0

Não sei se isso ajudará, mas encontrei um erro 10055 em um aplicativo enviando mensagens de transmissão UDP a cada poucos segundos. Aconteceu quando o aplicativo de transmissão estava em um laptop que foi dormir e foi acordado.

Ignorar o erro de algumas transmissões UDP consecutivas resolveu o problema.

Parece que o WinSock não foi completamente restaurado quando o aplicativo reiniciou a transmissão após o sono.

    
por 10.11.2015 / 15:41