none
Time Out de Procedure Ocorre somente na aplicação RRS feed

  • Pergunta

  • Boa Tarde Galera.

    Existi uma aplicação no meu ambiente que trabalha da seguinte forma .

    Lê 1 arquivo faz alguns tratamentos e insere o resultado por bulk insert em um banco no Sql server ( Standard 2008 ).

    Feito isso a aplicação chama uma Procedure que realiza apenas o seguinte :

     INSERT  INTO TB_Definitiva
                    (      
                      A,
                      B,
                      C,
                      D,
                      E,
                      F,      
                      G,
                      H,
                      I,
                      J,
                      K
                    )      
                    SELECT                
                          T.A,
    				      T.B,
    				      T.C,
    				      T.D,
    				      T.E,
    				      T.F,      
    				      T.G,
    				      T.H,
    				      T.I,
    				      T.J,
    				      T.K
                    FROM    TB_Temporaria T      
                            LEFT JOIN TB_Definitiva P ON T.A = P.A     
                                                       AND P.B = T.B      
                    WHERE   P.A IS NULL      
                            AND P.B IS NULL      
                            AND t.B IS NOT NULL       
            
            TRUNCATE TABLE TB_Temporaria ;  

    Após procerssar o 1º arquivo a tabela definitiva possui 0 registros e a temporaria 227450 registros (em media) .

    Em seguida é Processado um 2º arquivo e o processo flui bem até chegar a procedure que executa o codigo acima, e ae começa o problema pois ocorre TimeOut mas...Colocando Brake Point na aplicação( 2º arquivo) e executando a Procedure pela managemet do sql a execução da Procedure demorou quando muito 8 segundos , na aplicação quando chama a Procedure ou acusa time out ou demora muito ( Minutos ).

    Não é a 1º Vez que encontro situações onde a aplicação acusa sql time out e no Managemt do sql a Proc executa de forma rapida.

    Gostaria de saber da parte da aplicação o que posso Verificar (De preferencia alguem que ja passou por situação semelhante)

    O Set time out da aplicação está em 2000 segundos

    Aplicação  .Net  .

    Aparentemente não está sendo configurado transação por aplicação.

    Segundo o desenvolvedor não está caindo em loop.

    O SP_WHO demostra o Processo de insert em execução quando ocorre a demora de conclusão na aplicação .

    Aplicação rodando no mesmo host do management .

    O Unico retorno da Procedure é o Numero de linhas afetadas

    A situação em questão do " timeout só quando está na aplicação"  foi tratado com a criação de indice nos campos  do join mas a Pergunta é o Porque do comportamento na aplicação .  E como citei, Da parte da aplicação o que posso Verificar .

    **** Uma Situação Similar em Outra Procedure (Essa realizava uma consulta que retornava em menos de 3 segundos no managemente e timeout na aplicação )se resolveu de um dia para o outro sem que nenhuma ação fosse tomada .
    • Editado Setecidades quarta-feira, 21 de novembro de 2012 13:15
    sexta-feira, 16 de novembro de 2012 16:31

Respostas

  • Dá para depurar um pouco mais.

    No performance monitor qual é a diferença das duas execuções?

    Só por desencargo, não estão usando Resource Governor, certo?

    Mais um apor desencargo, eu passaria o processo pelo Tunning Advisor.

    No geral já peguei esse tipo de problema também, mas é evidente que os usuários administrativos e/ou locais, tem maior prioridade no proessamento, consegui contornar com índices e estatísticas.

    quarta-feira, 21 de novembro de 2012 17:13
  • Setecidades,

    uma vez peguei um problema parecido e resolvi colocando indices na temporarias, nao seria o seu caso? Faça o teste.

    E mais: a leitura de disco, como esta? saida de I/O, buffer, estas medições já chegou a fazer?

    []´s

    quinta-feira, 22 de novembro de 2012 15:32
  • Setecidades,

    Serie o erro semelhante a este?

    Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

    The statement has been terminated.

    A aplicação foi desenvolvida em qual linguagem? Em .NET usando ADO.Net o tempo limite default é 15 segundos para espera por resposta da execução de uma interação com o banco.

    http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout.aspx


    • Editado Andrei.F quinta-feira, 22 de novembro de 2012 16:06
    • Marcado como Resposta Gustavo M. Guimarães segunda-feira, 17 de dezembro de 2012 14:02
    quinta-feira, 22 de novembro de 2012 16:01

Todas as Respostas

  • Dá para depurar um pouco mais.

    No performance monitor qual é a diferença das duas execuções?

    Só por desencargo, não estão usando Resource Governor, certo?

    Mais um apor desencargo, eu passaria o processo pelo Tunning Advisor.

    No geral já peguei esse tipo de problema também, mas é evidente que os usuários administrativos e/ou locais, tem maior prioridade no proessamento, consegui contornar com índices e estatísticas.

    quarta-feira, 21 de novembro de 2012 17:13
  • Setecidades,

    uma vez peguei um problema parecido e resolvi colocando indices na temporarias, nao seria o seu caso? Faça o teste.

    E mais: a leitura de disco, como esta? saida de I/O, buffer, estas medições já chegou a fazer?

    []´s

    quinta-feira, 22 de novembro de 2012 15:32
  • Setecidades,

    Serie o erro semelhante a este?

    Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

    The statement has been terminated.

    A aplicação foi desenvolvida em qual linguagem? Em .NET usando ADO.Net o tempo limite default é 15 segundos para espera por resposta da execução de uma interação com o banco.

    http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout.aspx


    • Editado Andrei.F quinta-feira, 22 de novembro de 2012 16:06
    • Marcado como Resposta Gustavo M. Guimarães segunda-feira, 17 de dezembro de 2012 14:02
    quinta-feira, 22 de novembro de 2012 16:01
  • Obrigado Daniel_Quirino desde ja agradeço a atenção .

    Estamos sem Resource Governor .

    Aplicação estava em Produção e não existiu muito tempo para aferimento com Performance monitor .

    Execução em 8 segundos no management e a perder de vista na aplicação.

    Não Passei a Procedure no Tunning Advisor pois a situação ja foi corrigida .  (Corrigida com a criação de um indice )

    segunda-feira, 26 de novembro de 2012 15:58
  • Obrigado Advaldo Paiva Moreira .

    Acredito que o Problema esta na aplicação , o Problema como mencionei na abertura do Post ja foi resolvido com Indice, mas tamanha diferença de execução entre a aplicação e o management ao meu ver só se justifica devido a alguma opção definida na aplicação . 

    segunda-feira, 26 de novembro de 2012 16:16
  • Obrigado Andrei.F .

    O tempo total de execução foi aferido em 8 segundos para menos

    segunda-feira, 26 de novembro de 2012 16:18