Настройка доступной памяти для приложений сервера отчетов

Область применения: SQL Server 2016 (13.x) Reporting Services и более поздних версий Сервер отчетов Power BI

Содержимое, связанное с предыдущими версиями SQL Server Reporting Services, см. в статье SQL Server 2014 Reporting Services.

Важно!

Сведения в этой статье относятся только к функциям, связанным с отчетами с разбивкой на страницы (RDLs) в Сервер отчетов Power BI. Отчеты Power BI (PBIX) и их запланированные действия обновления в Сервер отчетов Power BI не влияют на эти параметры. Дополнительные сведения о запланированном обновлении памяти см. в разделе "Устранение неполадок с запланированным обновлением" в Сервер отчетов Power BI.

Хотя службы Reporting Services могут использовать всю доступную память, можно переопределить поведение по умолчанию. Вы можете переопределить поведение, настроив верхний предел общего объема ресурсов памяти, выделенных для серверных приложений служб Reporting Services. Можно также задать пороговые значения, которые изменяют способ назначения приоритета и обработки запросов сервером отчетов в зависимости от дефицита свободной памяти. При малом дефиците свободной памяти сервер отчетов назначает чуть более высокий приоритет интерактивной обработке отчетов или обработке отчетов по запросу. При серьезном дефиците свободной памяти сервер отчетов использует многочисленные приемы, чтобы сохранить работоспособность в условиях ограниченных доступных ресурсов.

В этой статье описаны настраиваемые пользователем параметры конфигурации и реакция сервера в случаях, когда при обработке запросов нужно учитывать недостаток свободной памяти.

Политики управления памятью

В ответ на ограничения системных ресурсов службы Reporting Services изменяют объем памяти, выделяемый определенным приложениям, и типы обработки запросов. Приложения, которые выполняются в службе сервера отчетов и участвуют в управлении памятью.

  • Веб-портал, клиентский веб-интерфейс для сервера отчетов.

  • Веб-служба сервера отчетов, используемая для интерактивной обработки отчетов и запросов по требованию.

  • Приложение фоновой обработки, используемое для обработки отчетов по расписанию, доставки подписок и обслуживания баз данных.

Политики управления памятью применяются к службе сервера отчетов в целом, а не к отдельным приложениям, выполняемым внутри процесса.

Если в системе нет нагрузки на память, каждое серверное приложение запрашивает некоторую память при запуске перед получением запросов, чтобы обеспечить оптимальную производительность при получении запросов в конечном итоге. По мере возникновения недостатка памяти, сервер отчетов корректирует модель процесса, как описано в следующей таблице.

Нехватка памяти Ответ сервера
Низкая Обработка текущих запросов продолжается. Новые запросы принимаются почти всегда. Запросы к приложениям, выполняющим обработку в фоновом режиме, имеют более низкий приоритет, чем запросы к веб-службе сервера отчетов.
Средняя Обработка текущих запросов продолжается. Новые запросы могут быть приняты. Запросы к приложениям, выполняющим обработку в фоновом режиме, имеют более низкий приоритет, чем запросы к веб-службе сервера отчетов. Выделение памяти сокращается для всех трех серверных приложений, более всего сокращение касается фоновой обработки, чтобы выделить больше памяти для запросов веб-службы.
Высокая Выделение памяти сокращается еще больше. Запросы дополнительной памяти со стороны серверных приложений запрещены. Обработка текущих запросов замедляется и для их завершения требуется больше времени. Новые запросы не принимаются. Сервер отчетов выгружает файлы данных из памяти на диск.

Если ограничения памяти становятся серьезными и для обработки новых запросов нет памяти, сервер отчетов возвращает ошибку HTTP 503-сервера недоступной. Этот результат происходит, пока текущие запросы завершаются. В некоторых случаях может быть выполнена очистка домена приложений, чтобы немедленно сократить недостаток свободной памяти.

Хотя вы не можете настроить ответы сервера отчетов на различные сценарии давления памяти, можно указать параметры конфигурации, определяющие границы, которые разделяют ответы с высоким, средним и низким давлением памяти.

Когда следует настраивать параметры управления памятью

Параметры по умолчанию указывают неравные области для низкой, средней и высокой нехватки свободной памяти. По умолчанию область низкой нехватки свободной памяти больше, чем зоны средней и высокой нехватки свободной памяти. Такая конфигурация оптимальна для нагрузки, которая распределена равномерно, либо увеличивается или сокращается постепенно. В этом случае переход между зонами совершается постепенно, и у сервера отчетов есть время скорректировать реакцию.

Если нагрузка изменяется скачками, то полезно изменить параметры по умолчанию. При внезапном всплеске нагрузки обработки сервер отчетов может быстро перейти от нехватки памяти к сбоям выделения памяти. Этот результат может произойти, если у вас несколько одновременных экземпляров отчета с интенсивным объемом памяти, начинающегося одновременно. Для обработки нагрузки такого типа рекомендуется как можно скорее перевести сервер отчетов в область средней или высокой нехватки памяти, чтобы замедлить обработку. Эта конфигурация позволяет выполнять дополнительные запросы. Чтобы разрешить выполнение дополнительных запросов, следует снизить значение MemorySafetyMargin для уменьшения зоны низкого давления памяти относительно других зон. Это приводит к тому, что ответы на средний и высокий объем памяти возникают ранее.

Параметры конфигурации для управления памятью

Параметры конфигурации, которые управляют распределением памяти для сервера отчетов — WorkingSetMaximum, WorkingSetMinimum, MemorySafetyMargin и MemoryThreshold.

  • Параметры WorkingSetMaximum и WorkingSetMinimum определяют область доступной памяти. Настраивая эти параметры, можно установить область доступной памяти для приложений сервера отчетов. Если вы размещаете несколько приложений на одном компьютере, эта память может оказаться полезной. Вы можете определить, что сервер отчетов использует непропорциональное количество системных ресурсов относительно других приложений на том же компьютере.

  • Параметры MemorySafetyMargin и MemoryThreshold указывают границы низкого, среднего и высокого уровней нехватки свободной памяти. Для каждого состояния службы Reporting Services предпринимают действие по исправлению, чтобы обработка отчетов и другие запросы выполнялись в соответствии с объемом памяти, доступной на компьютере. Можно указать параметры конфигурации, которые определяют разграничение между низким, средним и высоким уровнями нехватки свободной памяти.

    Хотя параметры конфигурации можно изменить, это не улучшает производительность обработки отчетов. Изменение параметров конфигурации полезно, только если запросы теряются прежде, чем будут завершены. Лучший способ повысить производительность сервера — развернуть сервер отчетов или его отдельные приложения на разных компьютерах.

На следующей иллюстрации показано, как параметры используются совместно, чтобы различить низкий, средний и высокий уровни нехватки свободной памяти:

Screenshot of the configuration settings for memory state.

В следующей таблице приведены описания параметров WorkingSetMaximum, WorkingSetMinimum, MemorySafetyMargin и MemoryThreshold. Параметры конфигурации задаются в файле RSReportServer.config.

Элемент Description
WorkingSetMaximum Порог памяти, после которого больше не будут приниматься новые запросы на предоставление памяти от приложений сервера отчетов.

По умолчанию сервер отчетов устанавливает значение WorkingSetMaximum равным объему доступной памяти в компьютере. Это значение обнаруживается при запуске службы.

Этот параметр не отображается в RSReportServer.config файле, если его не добавить вручную. Если вы хотите, чтобы сервер отчетов использовал меньше памяти, можно изменить RSReportServer.config файл и добавить элемент и значение. Диапазон допустимых значений — от 0 до максимального целого числа. Значение указывается в килобайтах.

По достижении значения WorkingSetMaximum сервер отчетов не принимает новые запросы. Обрабатываемые в это время запросы продолжают выполняться. Новые запросы принимаются лишь после того, как объем использованной памяти станет меньше значения, указанного параметром WorkingSetMaximum.

Если существующие запросы продолжают использовать больше памяти после WorkingSetMaximum достижения значения, все домены приложений сервера отчетов будут переработаны. Дополнительные сведения см. в разделе Application Domains for Report Server Applications.
WorkingSetMinimum Задает более низкий предел потребления ресурсов; Сервер отчетов не освобождает память, если общее использование памяти ниже этого предела.

Его значение по умолчанию рассчитывается при запуске службы. В соответствии с этим расчетом, запрашиваемый объем выделенной памяти составляет 60 процентов от WorkingSetMaximum.

Этот параметр не отображается в RSReportServer.config файле, если его не добавить вручную. Если вы хотите настроить это значение, необходимо добавить WorkingSetMinimum элемент в RSReportServer.config файл. Диапазон допустимых значений — от 0 до максимального целого числа. Значение указывается в килобайтах.
MemoryThreshold Задает процент WorkingSetMaximum, определяющий границу между высоким и средним уровнями потребления памяти. Если процент использования памяти достиг этого значения, сервер отчетов замедляет обработку запросов и перераспределяет память, выделенную различным серверным приложениям. Значение по умолчанию равно 90. Это значение должно быть больше значения параметра MemorySafetyMargin.
MemorySafetyMargin Задает процент WorkingSetMaximum, определяющий границу между средним и низким уровнями потребления памяти. Это значение является процентом доступной памяти, зарезервированной для системы, и ее нельзя использовать для операций сервера отчетов. Значение по умолчанию равно 80.

Примечание.

MemoryLimit и MaximumMemoryLimit параметры устарели в SQL Server 2008 (10.0.x) и более поздних версиях. При обновлении существующей установки или использования RSReportServer.config файла, включающего эти параметры, сервер отчетов больше не считывает эти значения.

Пример параметров конфигурации памяти

Следующий пример показывает параметры конфигурации для компьютера серверов отчетов, в котором используются пользовательские значения конфигурации памяти. Если вы хотите добавить WorkingSetMaximum или WorkingSetMinimum, введите элементы и значения в RSReportServer.config файле. Оба значения являются целыми числами, которые выражают килобайты ОЗУ, которые вы выделяете для серверных приложений. В следующем примере указывается, что общее выделение памяти для приложений сервера отчетов не может превышать 4 гигабайта. Если значение по умолчанию для WorkingSetMinimum (60 % WorkingSetMaximumот ) допустимо, его можно опустить и указать только WorkingSetMaximum в RSReportServer.config файле. Пример содержит параметр WorkingSetMinimum, чтобы показать, как выглядит этот параметр, если понадобится его добавить:

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

Сведения о параметрах конфигурации памяти ASP.NET

Хотя веб-служба сервера отчетов 2016 и более поздних версий являются приложениями HTML5, предыдущие версии являются приложениями ASP.NET, ни приложение не реагирует на параметры конфигурации памяти, указанные в processModel разделе machine.config для приложений ASP.NET, работающих в IIS 5.0 и более высоком режиме совместимости. Службы Reporting Services считывают параметры конфигурации памяти только из RSReportServer.config файла.

Файл конфигурации RsReportServer.config
Изменение файла конфигурации служб Reporting Services (RSreportserver.config)
Домены приложений для приложений сервера отчетов