none
Problemas no IIS RRS feed

  • Pergunta

  • Pessoal, boa tarde.

    Tenho um Web Service em uma determinada máquina, onde o mesmo de repente perde sua conexão com o Banco de dados. E somente o fato de eu reiniciar o IIS desta máquina o mesmo volta a funcionar normalmente.

    O "X" da questão é que está impactando diretamente nas pesquisas de nosso cliente e gostaria de saber se alguém sabe como resolver este problema, seja uma função que verifica se o IIS está realmente no ar via comando e restarta o serviço, etc.

    Agradeço desde já.

    segunda-feira, 5 de fevereiro de 2007 16:34

Todas as Respostas

  • Como assim ele perde a conexão? ele fica conectado ao BD? Ou durante um simples select ele perde a conexão?
    segunda-feira, 5 de fevereiro de 2007 17:03
  • Na verdade durante um simples select ele perde a conexão, mas isso acontece em torno de 2 vezes por semana. Consigo fazer as consultas normalmente, e de repente não tenho retorno da consulta "Request operation requires an OLE DB Session object, wich is not supported by the current provider." E somente o fato de eu reiniciar o IIS volta a funcionar perfeitamente.
    terça-feira, 6 de fevereiro de 2007 10:19
  • Voce abre essa conexao logo antes de executar o select ou abre uma vez e joga a variavel numa sessao??
    quarta-feira, 7 de fevereiro de 2007 00:11
  • Abro a conexão logo antes de executar o select...

    O Engraçado é que as vezes fica 1 semana sem acontecer o problema, e tem vezes que diariamente ocorre este erro. E pelo erro que aparece, até o momento não consegui identificar.

    quinta-feira, 8 de fevereiro de 2007 16:41
  • Denis,

    Muito estranho mesmo. Teóricamente se você abre a conexão, executa a operação e fecha, você teria problemas desse tipo apenas se desse Timeout, mas não deve ser o caso. Você está usando Trust Connection?

    quinta-feira, 8 de fevereiro de 2007 17:30
  • Estou pra dizer que isso eh problema de driver ou de rede. Qual banco de dados voce esta usando?
    quinta-feira, 8 de fevereiro de 2007 19:25
  • Quanto ao TrustConnection, sou iniciante em aplicações .net e não sei dizer se faço esta conexão, onde posso verificar?

    O Banco de Dados utilizado é o Supra. Utilizo o AdoDB para conexão.

    sexta-feira, 9 de fevereiro de 2007 12:51
  • Posta a string de conexão, muito embora, já não creio que não seja isso. Tá complicado isso aí.
    sexta-feira, 9 de fevereiro de 2007 13:43
  • Desculpe a demora.

    A string é: 

    Const Conn As String = "DSN=BANCO; UID=BANCO; LOCK=NORMAL; TIMEOUT=900;PWD=BCO"

    Obrigado.

    quinta-feira, 15 de fevereiro de 2007 11:21
  • Denis,

    Pela mensagem: "Request operation requires an OLE DB Session object, wich is not supported by the current provider.", não vejo outra coisa a não ser o uso de sessão, como você disse que não está usando, realmente não tenho ideia do que pode ser.

    quinta-feira, 15 de fevereiro de 2007 12:23
  • É um OLEDb Session, não o session do ASP.Net.

    Eu tentaria usar outro driver e ver se o problema some.

    Um artifício que você pode fazer é usar pools do IIS e configura-los para reinicar apos um certo numero de requests.

    quinta-feira, 15 de fevereiro de 2007 18:37
  • Puts, é verdade. Mas continuo na mesma.
    quinta-feira, 15 de fevereiro de 2007 18:40
  • Achei interessante, mas como eu faria isso?

    Sou iniciante em aplicações .Net

    Obrigado pela ajuda de todos até o momento!

    quinta-feira, 15 de fevereiro de 2007 20:03
  • O IIS do 2003 tem applications pools, basta abrir o console que voce vai ve-los.

    Nas propriedades deles voce configura quantos pools voce quer rodando ao mesmo tempo (caso um falhe, tem o outro) e de quanto em quanto tempo voce recicla um pool desses.

    Eu desconfio que esse driver seu esta com problema, deve ser um memory leak ou algo assim. Entao apos um tempo ele falha. Entao o que voce faz? Reinicia o pool de tempos em tempos automaticamente, antes que esse problema aconteca. Voce pode reiniciar por periodo de tempo, por numero de requests, por consumo de memoria, etc.

    Nao resolve o problema, mas contorna.
    quinta-feira, 15 de fevereiro de 2007 20:18
  • Não sei se te ajuda, mas vou contar um "causo" que me aconteceu.

    Tinhamos no meu trabalho uma aplicação que de uma hora pra outra parava de acessar o banco. Talvez parecido com o seu caso.

    O que ocorria, a pessoa que implementou a conexão com o banco utilizava o padrão "singleton" digo entre aspas pq ele n funcionava bem como um singleton.

    A cada select ele abria uma nova conexão e n fexava!!!!

    Requisição -> Abria uma nova -> N fexava!
    Requisição -> Abria uma nova -> N fexava!
    Requisição -> Abria uma nova -> N fexava!

    Até que uma hr o MSSQL dava pau e n abria mais conexões dando um erro, q n me lembro agora, mas que n era conexões demais.

    Bom, o que fiz, refiz o código para que funcionasse como um singleton de verdade. Ou seja, eu tinha apenas UMA instância da conexão em toda a aplicação e cada vez que ia fazer uma consulta, eu abria e fechava essa conexão.

    O código era coisa do tipo:
    IDbConnection con;

    IDbConnection GetConnection(){
        if (con == null){
                con = new SqlConnection("string de conexao");
        }
        return con;
    }


    Espero que esse causo possa te dar alguma luz...

    Eh isso...
    quinta-feira, 15 de março de 2007 18:45
  • O problema é que utilizamos o Windows 200 e IIS 5.0

     

    Mas obrigado pela ajuda.

    sexta-feira, 15 de junho de 2007 11:45