Erros WSAENOBUFS ao executar conexões HTTP no Windows Server 2008 x64

1

Estamos tentando transferir um grande número de arquivos de um compartilhamento de rede para o Openstack usando um aplicativo Erlang personalizado (usando a versão Erlang R15B).

Após cerca de 20k arquivos transferidos, o processo Erlang começa a retornar erros enobufs, resultando na impossibilidade de estabelecer conexões HTTP com o OpenStack. Além disso, o código C # em execução na mesma caixa não pode mais abrir sockets, resultando em erros vistos neste pergunta sobre falta de espaço de buffer suficiente . O fechamento de todos os aplicativos personalizados e a reinicialização não aliviam a situação.

O número de conexões abertas nunca excede 300 conectadas, mas normalmente vai para o intervalo de 2k ao incluir TIME_WAIT. As conexões não estão sendo abertas, mas estão sendo abertas e fechadas rapidamente.

Todos os artigos que eu encontrei parecem mencionar o limite de portas 'efêmeras', mas não parece que estamos alcançando isso, e fechar o aplicativo Erlang não resulta em melhorias.

Existe algo mais que poderia estar sendo mantido no espaço do buffer e não liberá-lo adequadamente?

    
por Eric 12.07.2012 / 20:45

1 resposta

2

Uma das funções do aplicativo era conversar com um serviço local. Parece que isso disparou um vazamento de soquete de kernel no Server 2008, onde não liberaria soquetes adequadamente. Aplicar o hotfix mencionado no artigo de suporte resolveu o problema.

    
por 13.07.2012 / 22:29