Dois dias atrás, um de nossos relatórios no Reporting Services começou a demorar muito mais para ser gerado. Seu tempo de geração aumentou de 4 segundos para 2 minutos.
Investigação encontrada:
O procedimento armazenado foi executado em 1 segundo e o plano de consulta foi aceitável
O relatório foi executado conforme o esperado em 4 segundos em uma máquina de desenvolvimento no Visual Studio
Assim que o relatório foi publicado no servidor de produção, ele ficou muito, muito mais lento.
O uso do monitor de atividade mostrou que o relatório estava sendo bloqueado com um bloqueio "LCK_M_S"
Ativei o rastreamento 1222 para verificar os impasses, mas nenhum impasse foi relatado.
A única informação que consegui sobre o que estava acontecendo foi pelo relatório "Top Transactions by Locks Count" para o banco de dados ReportServer. Ele listou as transações de bloqueio no ReportServerTempDB.
Esse padrão foi repetível com o relatório afetado por dois dias, você o executaria, veria o processo de bloqueio no monitor de atividades e o relatório demoraria muito mais 2 minutos.
No momento em que estávamos analisando o problema, ele desapareceu repentinamente , ninguém na equipe havia alterado nada, código ou dados, e agora o relatório voltou a ser executado em 3-4 segundos.
O que aconteceu?
Sem a intervenção do desenvolvedor, o relatório que levava repetidamente 2 minutos para ser executado e que durava 2 a 3 dias, de repente, volta a ser executado em 4 segundos e o processo de bloqueio visto no monitor de atividades desapareceu?