Pergunta

Eu estou construindo um site que funciona muito bem por algumas horas, mas depois * .asmx e * .ashx chamadas começar o tempo limite.

A excepção é: ". Tempo de espera expirou o período de tempo limite decorrido antes da obtenção de uma ligação a partir da piscina Isto pode ter ocorrido porque todas as ligações foram reunidas em utilização e o tamanho máximo do pool foi atingido"

Eu estou usando SubSonic como o ORM.

Eu suspeito que o problema é baseado em uma tarefa agendada que é executado a cada poucos minutos e bate o banco de dados. Quando eu olho no do SQL Server 2000 "atividade atual", vejo lá são:

  • 100 processos com o status de "dormir"
  • 100 bloqueios

Os 100 processos são da Aplicação "Provider .Net SqlClient Data" e o comando é "AGUARDANDO COMMAND".

Então, eu estou supondo que é a questão. . mas como faço para resolver isso? Isso soa como uma condição de impasse no db? Assim que eu

c: \> iisrestart

, está tudo bem (por um tempo).

Graças -. Eu apenas nunca encontrou algo como isto e não tenho certeza que o melhor caminho a seguir

Michael

Foi útil?

Solução

Poderia ser duplicado deste problema - é o pool de conexão funcionando corretamente no Subsonic?

Se você estiver carregando os objetos com Load () em vez de LoadAndCloseReader (), cada conexão será deixada em aberto e, eventualmente, você vai esgotar o pool de conexão.

Outras dicas

Quando você chama Load () em uma coleção que vai deixar o leitor aberto - Certifique-se de chamar LoadAndCloseReader () se você quer que o leitor para fechar -. Ou usar um bloco usando

Ela ajuda a ter algum código fonte também.

Eu não sei nada sobre Subsonic, mas talvez você está vazando 'contextos' banco de dados? Eu iria verificar que qualquer recurso de banco de dados está sendo descartado depois que você terminar com ele ...

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