Pergunta

Eu entendo que a resposta a esta pergunta pode depender de configurações do registro e da versão do Windows e talvez sobre a quantidade de RAM se não houver memória suficiente. Por causa desta questão, suponha que o servidor tem muita memória RAM (3+ GiB).

Se uma aplicação (aplicação 3o partido, neste caso) vazamentos de identificadores de algumas centenas de uma hora, quantas alças total pode que vazamento de aplicativo antes de outras aplicações será executado em problemas? Por "problemas" Quero dizer, por exemplo, deixar de iniciar uma discussão, não conseguir abrir um arquivo, e assim por diante.

Eu vi alguns servidores (carga leve) correr bem com um processo (normalmente um processo de banco de dados), utilizando algumas dezenas de milhares de alças, de modo que o velho limite de 10000 identificador não é claramente o problema aqui. (E que foi um limite por processo de qualquer maneira, então não afetaria o meu pedido, que é bem abaixo desse ponto.)

Pode alguém quer responder à pergunta ou apontar-me a alguns recursos que explicam sobre quantas alças total de um servidor Windows permitirá antes de efetivamente acabar (de alças ou outros recursos do sistema)?

Foi útil?

Solução

post de Raymond Chen sobre este tema . O gerenciador de janelas impõe um limite de 10K por processo, e tem um limite total de 32K em todo o sistema. Então, se ele "apenas" vazamentos 100 alças por hora, então você tem alguns dias de uptime antes de começar se comportando mal.

Note que nem todas as alças são iguais. identificadores de janela não são pegas DB, por exemplo, e podem seguir regras diferentes. Então, essa restrição pode não se aplicar, dependendo do que tipo de alças do programa está vazando. Também ler este post.

Outras dicas

O área de trabalho heap , que é um pool de memória onde o "material" real a alça representa vidas. Por vezes não é tanto quantas alças lhe tenha sido atribuído, mas quanta memória cada objeto em que identificador é usando Você pode depurar a pilha de desta forma . É um dor instalar.

(este foi reciclado a partir de outra das minhas respostas)

Uma vez que esses valores podem mudar com as novas versões do Windows, você pode usar a ferramenta SysInternals TestLimit / TestLimit64 para obter uma estimativa aproximada. A versão x64 podem funcionar por um tempo, especialmente para o teste de memória (pode usar o (arquivo de troca do disco rígido) para obter mais memória virtual).

Obter as ferramentas de http://live.sysinternals.com/WindowsInternals/ ou http://download.sysinternals.com/files/TestLimit.zip

opções de linha de comando:

-p check process limit
-t check thread limit
-h check handle limit
-u check user handle limit

De acordo com a este , 10000.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top