none
Problemas de performance com imagens no reporting services RRS feed

  • Pergunta

  • Bom dia caro colegas,

    Estou enfrentando alguns problemas de performance com imagens em um relatório que estou desenvolvendo, e vim aqui em busca de alguma alternativa para esta situação, pois, as minhas ja acabaram.

    A situação é o seguinte, tenho um relatório que traz muitas imagens, mas muitas imagens mesmo. Estas imagens estão armazenadas no banco no formato image, e para mostrar elas no relatorio utilizo este mesmo formato através de uma procedure.  A procedure está bastante perfomatica e traz sem problemas o resultado. Porém, quando utilizo os mesmos filtros no relatório gera um erro de system.out.of.memory(timeout).

    O problema está na imagem, parece que o reporting não consegue "guspir" a imagem para fora, pois esta mesma informação esta sendo gerada  sem problemas, o reporting só não consegue mostrar na tela. Não sei se estou certo, mas parece que o reporting não consegue converter este formato image para .png (tentei os outros formatos também) em grande escala e na hora de visualizar o relatório ele gera este erro.

    Tentei alterar as configurações de timeout do Reporting Services, mas nada adiantou, o tempo de timeout ficou o mesmo. Tirei a imagem do relatório para fazer um teste, e gerou muito rápido, por isso tenho certeza que o problema esta na imagem.

    Acredito que não tenho muitas alternativas, mas preciso esgotar todas que tenho. Será que se pegar esta informação diretamente de algum diretório fica mais perfomatico ? Não sei mais o que fazer, se alguém tiver alguma solução , palpite, fico muito agradecido !!!

    OBS: O relatório funciona quando é parametrizado para ter poucas imagens, somente da problema quando utilizo filtros um pouco maiores.

    Grato.

    sexta-feira, 13 de julho de 2012 14:06

Todas as Respostas

  • Cavera399,

    Porque você deseja converter as imagens para o formato .png? Você não esta trabalhando com o formato .jpeg?

    A mesma procedure executada diretamente no Management Studio funciona normalmente?

    Os dados são visualizados no Management Studio?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    segunda-feira, 16 de julho de 2012 18:10
  • Bom dia Pedro,

    O formato pode ser .jpeg, se isto der mais performance não tem problema nenhum. Apenas escolhi aleatoriamente um formato, não achei que isto poderia influenciar.

    Sim, sem problemas. Em menos de 1 minuto ela já começa a mostrar os valores, e todos corretos.   O problema que vejo que o relatório é muito extenso. O reporting está "apanhando" no campo de imagem, por que quando exibo este mesmo relatório sem a imagem é muito rápido.

    segunda-feira, 16 de julho de 2012 18:19
  • Cavera399,

    Tente converter estes arquivos para .jpeg ou .jpg e carregar no seu relatório.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    segunda-feira, 16 de julho de 2012 18:28
  • Quantas imagens seu relatorio traz? Qual a versao do SSRS voce esta usando?

    Pelo erro que voce postou parece que o RS esta ficando sem memoria, quanta memoria voce tem disponivel? e voce esta deixando o RS e SQL na mesma maquina? Seria interessante ver o que o RS fala na coluna "AdditionalInfo" do seu executionLog.


    Boreki[MSFT] - SQL Server Reporting Services

    segunda-feira, 16 de julho de 2012 20:16
  • Tranquilamente mais de 20 mil imagens. A versão é 2008 R2.

    Bem, monitorei este relatório e ele chegou a usar um pouco mais de 2GB no momento da execução, sendo que no dia a dia, os outros relatórios que tenho não passa de 400mb (todos juntos).

    Pode ser que esteja faltando memória, pois o SQL e o RS estão no mesmo servidor. O SQL utiliza toda memória disponível só para ele (é um guloso...rsrs), mas quando executo este relatório ele libera mais ou menos 1,5 GB para o RS.

    Desculpa minha ignorância, mas onde posso checar o : "AdditionalInfo" do executionLog ?

    segunda-feira, 16 de julho de 2012 20:24
  • Voce deve verificar a view "ExecutionLog3" no catalog database do RS.

    20 mil imagens? Pode descrever qual cenario voce tem que precisa de 20 mil imagens? Pode ser que para esse cenario existam outras alternativas para a geracao de imagens.


    Boreki[MSFT] - SQL Server Reporting Services

    segunda-feira, 16 de julho de 2012 22:59
  • cavera399,

    200 mil imagens carregadas em um única relatório? Nossa mas que tipo de relatório é esse?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    quarta-feira, 18 de julho de 2012 14:26
  • É um relatório de Empresa X Produto. Tem 80 empresas que tem em média 2500 imagens cadastradas. 

    Fica mais ou menos assim:

    Empresa | Imagem Produto.

    1 -          0000000

    1-           0000001

    2 -          0000000

    2 -          0000001

    Nota -se que a mesma imagem será replicada 80 vezes (80 * 2500 = 200 mil ), é isso que tah deixando lento o relatório. No momento estou na expectativa da empresa rever algumas informações do relatório para diminuir o volume de informação deste relatório.

    Assim que tiver alguma novidade, postarei o que foi feito. No momento estou em estado de espera.  

    quarta-feira, 18 de julho de 2012 15:13
  • cavera399,

    Beleza, ok, a quantidade realmente é grande, talvez seja o caso de você tentar diminiur o tamanho da imagem no relatório.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    quarta-feira, 18 de julho de 2012 16:40
  • A solução que encontrei foi essa:

    Além de diminuir o tamanho da imagem e converte -la para .jpeg tive que reestruturar toda lógica da procedure que é usada pelo reporting services.

    Foi criado 2as procedures auxiliares que atualizam periodicamente as informações do relatório e das imagens.  Assim, a procedure do relatório,
    irá buscar apenas as informações necessárias e que já estão com os valores consolidados,ou seja, é apenas um simples select sem tratativas ou cálculos.
    A procedure do relatório agora só irá juntar as informações do produto com a imagem.

    Foi retirado do relatório várias informações, o que diminuiu em muito total de linhas do relatório. 

    Foi adicionado ao relatório um filtro onde se tem a opção de mostrar as informações agrupadas de todas as lojas ou informações loja a loja.
    No modo agrupado o produto se repetirá apenas 1 vez trazendo seus valores agrupados, assim, ficando muito mais performático o relatório.
    E no modo loja a loja, com as alterações acima ficou bastante performático sendo possível executar consultas bem maiores e com o uso bastante reduzido da memória.

    Por enquanto é isso, vlw pessoal a ajuda de voçês foi bastante importante.

    segunda-feira, 13 de agosto de 2012 18:12