Configurar la memoria disponible para las aplicaciones del servidor de informes

Se aplica a: SQL Server 2016 (13.x) Reporting Services y versiones posteriores Power BI Report Server

Para obtener contenido relacionado con versiones anteriores de SQL Server Reporting Services (SSRS), vea SQL Server Reporting Services 2014.

Importante

La información de este artículo solo se aplica a las características relacionadas con los informes paginados (RDL) dentro del servidor de informes de Power BI. Los informes de Power BI (PBIX) y las actividades de actualización programadas dentro del servidor de informes de Power BI no se ven afectados por esta configuración. Para obtener ayuda con la memoria de actualización programada, consulte Solución de problemas de actualización programada en el servidor de informes de Power BI.

Aunque Reporting Services puede usar toda la memoria disponible, puede invalidar el comportamiento predeterminado. Puede invalidar el comportamiento predeterminado configurando un límite superior en la cantidad total de los recursos de memoria asignados a las aplicaciones de servidor Reporting Services. También puede establecer umbrales que hacen que el servidor de informes cambie la manera de asignar prioridades y procesa las solicitudes dependiendo de si la presión de memoria es baja, media o alta. En niveles bajos de presión de memoria, el servidor de informes responde concediendo una prioridad ligeramente superior al procesamiento de informes a petición o interactivo. En los niveles altos de presión de memoria, el servidor de informes usa varias técnicas para seguir siendo operativo usando los recursos limitados que están disponibles para él.

En este artículo se describe la configuración que puede especificar y la manera en la que el servidor responde cuando la presión de memoria se convierte en un factor en las solicitudes de procesamiento.

Directivas de administración de memoria

Reporting Services responde a las restricciones de recursos del sistema ajustando la cantidad de memoria que se asigna a aplicaciones concretas y tipos de solicitudes de procesamiento. Entre las aplicaciones que se ejecutan en el servicio del servidor de informes y que están sujetas a la administración de memoria se incluyen:

  • El portal web, que es una aplicación front-end web para el servidor de informes.

  • El servicio web del servidor de informes, que se usa para el procesamiento de informes interactivo y las solicitudes a petición.

  • Una aplicación de procesamiento en segundo plano, que se usa para el procesamiento programado de informes, la entrega de suscripciones y el mantenimiento de bases de datos.

Las directivas de administración de memoria se aplican al servicio del servidor de informes en su conjunto y no a las aplicaciones individuales que se ejecutan dentro del proceso.

Si no hay presión de memoria en el sistema, cada aplicación de servidor solicita memoria al inicio, anticipándose a la recepción de solicitudes, para ofrecer un rendimiento óptimo cuando las solicitudes se reciban a la larga. Conforme se genera la presión de memoria, el servidor de informes ajusta su modelo de proceso como se describe en la tabla siguiente.

Presión de memoria Respuesta del servidor
Bajo Las solicitudes actuales continúan en proceso. Casi siempre se aceptan las nuevas solicitudes. A las solicitudes que se dirigen a la aplicación de procesamiento de fondo se les proporciona una prioridad menor que a las solicitudes dirigidas al servicio web del servidor de informes.
Media Las solicitudes actuales continúan en proceso. Se podrían aceptar las nuevas solicitudes. A las solicitudes que se dirigen a la aplicación de procesamiento de fondo se les proporciona una prioridad menor que a las solicitudes dirigidas al servicio web del servidor de informes. Se reducen las asignaciones de memoria para las tres aplicaciones de servidor, con reducciones relativamente mayores al procesamiento de fondo para liberar más memoria para solicitudes de servicio web.
Alto Se reduce aún más la asignación de memoria. Se deniegan las aplicaciones de servidor que solicitan más memoria. Las solicitudes actuales disminuyen y tardan más tiempo en completarse. No se aceptan nuevas solicitudes. El servidor de informes intercambia archivos de datos en memoria al disco.

Si las restricciones de memoria se vuelven graves y no hay ninguna memoria disponible para controlar las nuevas solicitudes, el servidor de informes devolverá un error no disponible de servidor HTTP 503. Este resultado se produce mientras se completan las solicitudes actuales. En algunos casos, los dominios de aplicación se podrían reciclar para reducir la presión de memoria inmediatamente.

Aunque no puede personalizar las respuestas del servidor de informes a los diferentes escenarios de presión de memoria, puede especificar la configuración que define los límites que separan las respuestas de presión de memoria alta, media y baja.

Cuándo personalizar la configuración de administración de memoria

La configuración predeterminada especifica los intervalos desiguales para presión de memoria baja, media y alta. De forma predeterminada, la zona de presión de memoria baja es mayor que las zonas para la presión de memoria media y alta. Esta configuración es óptima para las cargas de procesamiento que se distribuyen uniformemente o que crecen o se rechazan de manera incremental. En este escenario, la transición entre las zonas es gradual y el servidor de informes tiene el tiempo de ajustar su respuesta.

La modificación de la configuración predeterminada resulta útil si el modelo de carga incluye picos. Cuando hay picos repentinos en la carga de procesamiento, el servidor de informes puede pasar de no tener presión de memoria a presentar errores de asignación de memoria rápidamente. Este resultado puede producirse si tiene varias instancias simultáneas de un informe que usa mucha memoria que empiezan al mismo tiempo. Para controlar este tipo de carga de procesamiento, desea que el servidor de informes pase a una respuesta de presión de memoria media o alta lo antes posible de manera que pueda reducir el procesamiento. Esto permite que se completen más solicitudes. Para permitir que se completen más solicitudes, debería disminuir el valor para MemorySafetyMargin hacer la zona de presión de memoria baja menor en relación con las demás zonas. Si se hace, dará lugar a que las respuestas para presión de memoria media o alta se produzcan antes.

Valores de configuración para la administración de memoria

Entre los valores de configuración que controlan la asignación de memoria para el servidor de informes se incluyen WorkingSetMaximum, WorkingSetMinimum, MemorySafetyMargin y MemoryThreshold.

  • WorkingSetMaximum y WorkingSetMinimum definen el intervalo de memoria disponible. Puede configurar estos valores para establecer un intervalo de memoria disponible para las aplicaciones del servidor de informes. Si hospeda varias aplicaciones en el mismo equipo, esta memoria puede ser útil. Puede determinar que el servidor de informes está usando una cantidad desproporcionada de recursos del sistema en relación con otras aplicaciones del mismo equipo.

  • MemorySafetyMargin y MemoryThreshold establecen los límites para los niveles bajo, medio, y alto de presión de memoria. Para cada estado, Reporting Services adopta acciones correctivas para asegurarse de que el procesamiento de informe y otras solicitudes se controlan adecuadamente respecto de la cantidad de memoria disponible en el equipo. Puede especificar los valores de configuración que determinan la delineación entre los niveles de presión bajo, alto y medio.

    Aunque puede cambiar los valores de configuración, al hacerlo no se mejorará el rendimiento del procesamiento de informes. El cambio de los valores de configuración solamente resulta útil si se quitan las solicitudes antes de completarlas. La mejor manera de mejorar el rendimiento del servidor es implementar el servidor de informes o las aplicaciones del servidor de informes individuales en equipos dedicados.

La ilustración siguiente muestra cómo se usa la configuración en conjunto para distinguir entre los niveles bajo, medio y alto de presión de memoria:

Screenshot of the configuration settings for memory state.

En la tabla siguiente se describen las configuraciones WorkingSetMaximum, WorkingSetMinimum, MemorySafetyMargin y MemoryThreshold. Los valores de configuración se especifican en el archivo RSReportServer.config.

Elemento Descripción
WorkingSetMaximum Especifica un umbral de memoria después de que no se conceda ninguna nueva solicitud de asignación de memoria a las aplicaciones del servidor de informes.

De forma predeterminada, el servidor de informes establece WorkingSetMaximum en la cantidad de memoria disponible en el equipo. Este valor se detecta cuando se inicia el servicio.

Este valor no aparece en el archivo RSReportServer.config a menos que lo agregue manualmente. Si desea que el servidor de informes use menos memoria, puede modificar el archivo RSReportServer.config y agregar el elemento y el valor. El intervalo de valores válidos es de 0 al entero máximo. Este valor se expresa en kilobytes.

Cuando se alcanza el valor de WorkingSetMaximum, el servidor de informes no acepta nuevas solicitudes. Las solicitudes que se encuentran en curso actualmente podrán completarse. Las nuevas solicitudes se aceptan solo cuando el uso de memoria cae por debajo del valor especificado mediante WorkingSetMaximum.

Si las solicitudes existentes continúan consumiendo memoria adicional después de que se ha alcanzado el valor WorkingSetMaximum, se reciclarán todos los dominios de aplicación de servidor. Para obtener más información, vea Application Domains for Report Server Applications.
WorkingSetMinimum Especifica un límite inferior para el consumo de recursos; el servidor de informes no liberará memoria si el uso de memoria total se encuentra por debajo de este límite.

De forma predeterminada, el valor se calcula al inicio del servicio. El cálculo es que la solicitud de asignación de memoria inicial es para el 60 por ciento de WorkingSetMaximum.

Este valor no aparece en el archivo RSReportServer.config a menos que lo agregue manualmente. Si desea personalizar este valor, debe agregar el elemento WorkingSetMinimum al archivo RSReportServer.config. El intervalo de valores válidos es de 0 al entero máximo. Este valor se expresa en kilobytes.
MemoryThreshold Especifica un porcentaje de WorkingSetMaximum que define el límite entre los escenarios de presión alta y media. Si el uso de memoria del servidor de informes alcanza este valor, el servidor de informes ralentiza el procesamiento de la solicitud y cambia la cantidad de memoria asignada a aplicaciones de servidor diferentes. El valor predeterminado es 90. Este valor debería ser mayor que el valor establecido para MemorySafetyMargin.
MemorySafetyMargin Especifica un porcentaje de WorkingSetMaximum que define el límite entre el los escenarios de presión media y baja. Este valor es el porcentaje de memoria disponible que se reserva para el sistema y no se puede usar para las operaciones del servidor de informes. El valor predeterminado es 80.

Nota:

Las configuraciones MemoryLimit y MaximumMemoryLimit están obsoletas en SQL Server 2008 (10.0.x) y versiones posteriores. Si ha actualizado una instalación existente o está usando un archivo RSReportServer.config que incluye dicha configuración, el servidor de informes ya no leerá dichos valores.

Ejemplo de las opciones de configuración de memoria

El ejemplo siguiente muestra los valores de configuración para un equipo del servidor de informes que usa valores de configuración de memoria personalizados. Si desea agregar WorkingSetMaximum o WorkingSetMinimum, debe escribir los elementos y los valores en el archivo RSReportServer.config. Ambos valores son enteros que expresan kilobytes de RAM que está asignando a las aplicaciones de servidor. El ejemplo siguiente especifica que la asignación de memoria total para las aplicaciones del servidor de informes no puede superar los 4 gigabytes. Si el valor predeterminado para WorkingSetMinimum (60 % de WorkingSetMaximum) es aceptable, puede omitirlo y especificar únicamente WorkingSetMaximum en el archivo RSReportServer.config. Este ejemplo incluye WorkingSetMinimum para mostrar cómo aparecería si deseara agregarlo:

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

Acerca de los valores de configuración de memoria de ASP.NET

Aunque el servicio web del servidor de informes 2016 (y versiones posteriores) y el portal web son aplicaciones HTML5, las versiones anteriores son aplicaciones de ASP.NET, ninguna aplicación responde a los valores de configuración de memoria que especifica en la sección processModel de machine.config para aplicaciones de ASP.NET que se ejecutan en el modo de compatibilidad de IIS 5.0 y posterior. Reporting Services lee solamente los valores de configuración de la memoria del archivo RSReportServer.config.

Archivo de configuración RSReportServer.config
Modificar un archivo de configuración de Reporting Services (RSreportserver.config)
Dominios de aplicación para las aplicaciones del servidor de informes