Configurar memória disponível para aplicativos do Servidor de Relatórios

Aplica-se a: SQL Server 2016 (13.x) Reporting Services e posterior Power BI Report Server

Para obter conteúdo relacionado a versões anteriores do SSRS (SQL Server Reporting Services), confira SQL Server 2014 Reporting Services.

Importante

As informações neste artigo se aplicam somente a recursos relacionados a RDLs (relatórios paginados) em Servidor de Relatórios do Power BI. Os relatórios do Power BI (PBIX) e suas atividades de atualização agendadas em Servidor de Relatórios do Power BI não são afetados por essas configurações. Para obter ajuda com a atualização agendada, confira Solucionar problemas de atualização agendada no Servidor de Relatórios do Power BI.

Embora o Reporting Services possa usar toda a memória disponível, você pode substituir o comportamento padrão. Você pode substituir o comportamento configurando um limite máximo na quantidade total de recursos de memória alocados para aplicativos de servidor do Reporting Services. Você também poderá definir limites que façam com que o servidor de relatório altere a maneira de priorizar e processar solicitações se a pressão de memória estiver baixa, média ou alta. Em níveis baixos de pressão de memória, o servidor de relatório responde dando uma prioridade ligeiramente mais alta a um processamento de relatório interativo ou sob demanda. Em níveis altos de pressão de memória, o servidor de relatório usa várias técnicas para permanecer operacional usando os recursos limitados disponíveis.

Este artigo descreve as definições de configuração que você pode especificar e como o servidor responde quando a pressão de memória torna-se um fator nas solicitações de processamento.

Políticas de gerenciamento de memória

O Reporting Services responde às restrições de recurso do sistema ajustando a quantidade de memória alocada a aplicativos e tipos de solicitações de processamentos específicos. Os aplicativos executados no serviço do Servidor de Relatório e sujeitos ao gerenciamento de memória incluem:

  • O portal da Web, um aplicativo front-end da Web para o servidor de relatório.

  • O serviço Web Servidor de Relatórios, usado para processamento de relatório interativo e solicitações sob demanda.

  • Um aplicativo de processamento em segundo plano, usado para manutenção de banco de dados, entrega de assinatura e processamento de relatório agendado.

As políticas de gerenciamento de memória aplicam-se ao serviço do Servidor de Relatório como um todo e não a aplicativos individuais executados no processo:

Se não houver pressão de memória no sistema, cada aplicativo do servidor solicita memória na inicialização, antecipadamente ao recebimento de solicitações, para obter desempenho ideal quando as solicitações forem finalmente recebidas. À medida que a pressão de memória aumenta, o servidor de relatório ajusta esse processo conforme descrito na tabela a seguir.

Demanda de memória Resposta do servidor
Baixo As solicitações atuais continuam sendo processadas. As novas solicitações são quase sempre aceitas. As solicitações direcionadas ao aplicativo de processamento em segundo plano recebem uma prioridade menor que as solicitações direcionadas ao serviço Web Servidor de Relatórios.
Médio As solicitações atuais continuam sendo processadas. Novas solicitações podem ser aceitas. As solicitações direcionadas ao aplicativo de processamento em segundo plano recebem uma prioridade menor que as solicitações direcionadas ao serviço Web Servidor de Relatórios. As alocações de memória de todos os três aplicativos de servidor são reduzidas, com reduções relativamente maiores no processamento em segundo plano para tornar mais memória disponível para as solicitações de serviço Web.
Alta A alocação de memória é reduzida ainda mais. Os aplicativos de servidor que solicitam mais memória são negados. As solicitações atuais são retardadas e demoram mais tempo para serem concluídas. Novas solicitações não são aceitas. O servidor de relatório troca arquivos de dados na memória com o disco.

Se as restrições de memória se tornarem graves e não houver memória disponível para lidar com novas solicitações, o servidor de relatório retornará um erro de servidor HTTP 503 indisponível. Esse resultado acontece enquanto as solicitações atuais estão sendo concluídas. Em alguns casos, os domínios de aplicativo podem ser imediatamente reciclados para reduzir a pressão de memória.

Apesar de não ser possível personalizar as respostas de servidor de relatório em diferentes cenários de pressão de memória, você pode especificar as definições de configuração que definem os limites que separam as respostas de pressão de memória alta, média e baixa.

Quando personalizar as configurações de gerenciamento de memória

As configurações padrão especificam intervalos desiguais para pressão de memória baixa, média e alta. Por padrão, a zona de pressão de memória baixa é maior que as zonas média e alta. Essa configuração é ideal para processamento de cargas igualmente distribuídas que crescem ou diminuem incrementalmente. Nesse cenário, a transição entre zonas é gradual e o servidor de relatório tem hora para ajustar sua resposta.

Modificar as definições padrão será útil se o padrão de carga incluir picos. Quando há picos repentinos na carga de processamento, o servidor de relatório pode passar de nenhuma pressão de memória para falhas de alocação de memória rapidamente. Esse resultado poderá acontecer se você tiver várias instâncias simultâneas de um relatório que consome bastante memória. Para trabalhar com esse tipo de carga de processamento, é necessário que o servidor de relatório passe para uma resposta de pressão de memória média ou alta o mais breve possível, de modo que ele possa desacelerar o processamento. Esta configuração permite que mais solicitações sejam concluídas. Para permitir que mais solicitações sejam concluídas, você deve diminuir o valor para MemorySafetyMargin para tornar a zona de baixa pressão de memória menor em relação às outras zonas. Isso faz com que as respostas para pressão de memória média e alta ocorram anteriormente.

Definições de configuração para gerenciamento de memória

As definições de configuração que controlam alocação de memória para o servidor de relatório incluem WorkingSetMaximum, WorkingSetMinimum, MemorySafetyMargin e MemoryThreshold.

  • WorkingSetMaximum e WorkingSetMinimum definem o intervalo de memória disponível. Você pode configurar essas configurações para definir um intervalo de memória disponível para os aplicativos de servidor de relatório. Se você estiver hospedando vários aplicativos no mesmo computador, essa memória pode ser útil. Você pode determinar se o servidor de relatório está usando uma quantidade desproporcional de recursos do sistema em relação a outros aplicativos no mesmo computador.

  • MemorySafetyMargin e MemoryThreshold definem os limites para pressão de memória baixa, média e alta. Para cada estado, o Reporting Services executa a ação corretiva para assegurar que o processamento de relatório e outras solicitações sejam tenha tratamento apropriado em relação à quantidade de memória disponível no computador. Você pode especificar as definições de configuração que determinam a delineação entre níveis de pressão baixa, média e alta.

    Embora você possa alterar as definições de configuração, isso não melhora o desempenho do processamento de relatórios. Alterar as definições de configuração será útil apenas se as solicitações estiverem sendo descartadas antes de sua conclusão. A melhor maneira de melhorar o desempenho do servidor é implantando o servidor de relatório ou aplicativos individuais de servidor de relatório em computadores dedicados.

A ilustração a seguir mostra como as configurações são usadas em conjunto para distinguir entre níveis de pressão de memória baixa, média e alta.

Screenshot of the configuration settings for memory state.

A tabela a seguir descreve as configurações WorkingSetMaximum, WorkingSetMinimum, MemorySafetyMargin e MemoryThreshold. As definições de configuração são especificadas no arquivo RSReportServer.config.

Elemento Descrição
WorkingSetMaximum Especifica um limite de memória depois do qual nenhuma nova solicitação de alocação de memória é concedida a aplicativos de servidor de relatório.

Por padrão, o servidor de relatório define WorkingSetMaximum como a quantidade de memória disponível no computador. Esse valor é detectado quando o serviço é iniciado.

Essa configuração não é exibida no arquivo RSReportServer.config, a menos que você a adicione manualmente. Se desejar que o servidor de relatório use menos memória, você poderá modificar o arquivo RSReportServer.config e adicionar o elemento e o valor. O intervalo de valores válidos é de 0 ao inteiro máximo. Esse valor é expresso em quilobytes.

Quando o valor for WorkingSetMaximum atingido, o servidor de relatório não aceitará novas solicitações. As solicitações atualmente em progresso podem ser concluídas. Novas solicitações são aceitas apenas quando o uso da memória fica abaixo do valor especificado em WorkingSetMaximum.

Se as solicitações existentes continuarem a consumir mais memória após o valor WorkingSetMaximum ser atingido, todos os domínios de aplicativos do servidor de relatório serão reciclados. Para obter mais informações, consulte Application Domains for Report Server Applications.
WorkingSetMinimum Especifica um limite inferior para consumo de recursos; o servidor de relatório não libera memória se o uso geral da memória estiver abaixo desse limite.

Por padrão, o valor é calculado na inicialização do serviço. O cálculo é que a solicitação de alocação de memória inicial é de 60 por cento de WorkingSetMaximum.

Essa configuração não é exibida no arquivo RSReportServer.config, a menos que você a adicione manualmente. Se desejar personalizar esse valor, você deverá adicionar o elemento WorkingSetMinimum ao arquivo RSReportServer.config. O intervalo de valores válidos é de 0 ao inteiro máximo. Esse valor é expresso em quilobytes.
MemoryThreshold Especifica uma porcentagem de WorkingSetMaximum que define o limite entre cenários de pressão média e alta. Se o uso da memória do servidor de relatório alcançar esse valor, o servidor de relatório reduzirá o processamento de solicitações e alterará a quantidade de memória alocada a diferentes aplicativos do servidor. O valor padrão é 90. Esse valor deve ser maior do que o valor definido para MemorySafetyMargin.
MemorySafetyMargin Especifica uma porcentagem de WorkingSetMaximum que define o limite entre cenários de pressão média e baixa. Esse valor é a porcentagem de memória disponível reservada para o sistema e não pode ser usado para operações de servidor de relatório. O valor padrão é 80.

Observação

As configurações MemoryLimit e MaximumMemoryLimit estão obsoletas no SQL Server 2008 (10.0.x) e versões posteriores. Se você atualizou uma instalação existente ou usou um arquivo RSReportServer.config que inclui essas configurações, o servidor de relatório não lerá mais esses valores.

Exemplo de definições de configuração de memória

O exemplo a seguir mostra as definições de configuração de um computador de servidor de relatório que usa valores de configuração de memória personalizados. Se desejar adicionar WorkingSetMaximum ou WorkingSetMinimum, você deve digitar os elementos e valores no arquivo RSReportServer.config. Ambos os valores são inteiros que expressam quilobytes de RAM que você está alocando aos aplicativos de servidor. O exemplo a seguir especifica que a alocação de memória total dos aplicativos de servidor de relatório não pode exceder 4 gigabytes. Se o valor padrão para WorkingSetMinimum (60% de WorkingSetMaximum) for aceitável, você poderá omiti-lo e especificar apenas WorkingSetMaximum no arquivo RSReportServer.config. Este exemplo inclui WorkingSetMinimum para mostrar como seria se você quisesse adicioná-lo:

      Config files 
      <MemorySafetyMargin>80</MemorySafetyMargin>  
      <MemoryThreshold>90</MemoryThreshold>  
      <WorkingSetMaximum>4000000</WorkingSetMaximum>  
      <WorkingSetMinimum>2400000</WorkingSetMinimum>  

Sobre definições de configuração de memória do ASP.NET

Embora o serviço Web Servidor de Relatórios 2016 e posterior e o portal da Web sejam aplicativos HTML5 e as versões anteriores sejam aplicativos ASP.NET, nenhum aplicativo responde às definições de configuração de memória especificadas na seção processModel de machine.config para aplicativos ASP.NET executados no modo de compatibilidade do IIS 5.0 e posterior. O Reporting Services lê as configurações de memória somente do arquivo RSReportServer.config.

Arquivo de configuração RsReportServer.config
Modificar um arquivo de configuração do Reporting Services (RSreportserver.config)
Domínios do aplicativo para aplicativos do Servidor de Relatório