Límites de recursos y optimización de rendimiento para los complementos de Office

Para crear la mejor experiencia para los usuarios, asegúrese de que sus complementos de Office funcionan dentro de límites específicos para el uso del núcleo de CPU y de la memoria, la confiabilidad y, en el caso de los complementos de Outlook, el tiempo de respuesta para evaluar expresiones regulares. Estos límites de uso de recursos en tiempo de ejecución se aplican a los complementos que se ejecutan en clientes de Office en Windows y OS X, pero no en aplicaciones móviles o en un explorador.

También puede optimizar el rendimiento de los complementos en dispositivos móviles y en el escritorio mediante la optimización del uso de recursos en la implementación y diseño del complemento.

Límites de uso de recursos para complementos

Los límites de uso de recursos en tiempo de ejecución se aplican a todos los tipos de complementos de Office. Estos límites ayudan a garantizar el rendimiento de los usuarios y a mitigar los ataques por denegación de servicio. Asegúrese de probar el complemento de Office en la aplicación de Office de destino mediante una variedad de datos posibles y mida su rendimiento con los siguientes límites de uso en tiempo de ejecución.

  • Uso de núcleos de CPU: un único umbral de uso de núcleos de CPU del 90 %, que se comprueba tres veces en intervalos predeterminados de 5 segundos.

    El intervalo predeterminado para que un cliente de Office compruebe el uso del núcleo de CPU es cada 5 segundos. Si el cliente de Office detecta que el uso del núcleo de CPU de un complemento está por encima del valor de umbral, muestra un mensaje que pregunta si el usuario quiere seguir ejecutando el complemento. Si el usuario decide continuar, el cliente de Office no vuelve a preguntar al usuario durante esa sesión de edición. Es posible que los administradores deseen usar la clave de registro AlertInterval para aumentar el umbral y reducir la aparición de este mensaje de advertencia si los usuarios ejecutan complementos que consumen muchos recursos de la CPU.

  • Uso de memoria: umbral predeterminado de uso de memoria que se determina de forma dinámica según la memoria física disponible del dispositivo.

    De forma predeterminada, cuando un cliente de Office detecta que el uso de memoria física en un dispositivo supera el 80 % de la memoria disponible, el cliente comienza a supervisar el uso de memoria del complemento, en un nivel de documento para complementos de contenido y panel de tareas y en un nivel de buzón para complementos de Outlook. En un intervalo predeterminado de 5 segundos, el cliente advierte al usuario si el uso de memoria física para un conjunto de complementos en el nivel de documento o buzón supera el 50 %. Este límite del uso de la memoria usa memoria física más que virtual para asegurar el buen rendimiento de los dispositivos con RAM limitada, como las tabletas. Los administradores pueden invalidar esta configuración dinámica con un límite explícito mediante la clave del Registro de Windows MemoryAlertThreshold como una configuración global, e ir ajustar el intervalo de alertas mediante la clave AlertInterval como una configuración global.

  • Tolerancia de bloqueos: límite predeterminado de cuatro bloqueos por complemento.

    Los administradores pueden ajustar el umbral de bloqueos mediante el uso de la clave de registro RestartManagerRetryLimit.

  • Bloqueo de aplicaciones: umbral prolongado de falta de respuesta de 5 segundos por complemento.

    Esto afecta a las experiencias del usuario del complemento y la aplicación de Office. Cuando esto ocurre, la aplicación de Office reinicia automáticamente todos los complementos activos de un documento o buzón (si procede) y advierte al usuario sobre qué complemento ha dejado de responder. Los complementos pueden alcanzar este umbral cuando regularmente no realizan el procesamiento mientras se realizan tareas de larga duración. Existen técnicas para asegurarse de que no se produzca un bloqueo. Los administradores no pueden reemplazar este umbral.

Complementos de Outlook

Si algún complemento de Outlook supera los umbrales anteriores para el uso de memoria o núcleo de CPU, o el límite de tolerancia para bloqueos, el complemento deja de estar disponible. El Centro de Administración exchange muestra el estado del complemento.

Nota:

Aunque solo Outlook en Windows y en Mac supervisan el uso de recursos, si alguno de estos clientes deja de estar disponible un complemento de Outlook, ese complemento también deja de estar disponible en Outlook en la Web, en dispositivos móviles y en el nuevo Outlook en Windows (versión preliminar).

Además del núcleo de CPU, la memoria y las reglas de confiabilidad, los complementos de Outlook deben observar las siguientes reglas sobre la activación.

  • Tiempo de respuesta para las expresiones regulares: Outlook tiene un umbral predeterminado de 1000 milisegundos para evaluar todas las expresiones regulares en el manifiesto de un complemento de Outlook. Si se sobrepasa ese umbral, Outlook volverá a intentar realizar la evaluación más adelante.

    Mediante una directiva de grupo o una configuración específica de una aplicación en el Registro de Windows, los administradores pueden ajustar este valor predeterminado de 1.000 milisegundos del umbral en la configuración OutlookActivationAlertThreshold.

  • Reevaluación de expresiones regulares: Outlook tiene un límite predeterminado de tres veces para volver a evaluar todas las expresiones regulares de un manifiesto. Si se produce un error en la evaluación tres veces al superar el umbral aplicable (que es el valor predeterminado de 1000 milisegundos o un valor especificado por OutlookActivationAlertThreshold, si esa configuración existe en el Registro de Windows), Outlook hace que el complemento no esté disponible. El Centro de exchange Administración muestra el estado del complemento y el complemento no está disponible en Outlook en Windows (clásico y nuevo (versión preliminar),en Mac, en la web y en dispositivos móviles.

    Mediante una directiva de grupo o una configuración específica de una aplicación en el Registro de Windows, los administradores pueden ajustar el número de veces que tratará de llevarse a cabo la evaluación en la configuración OutlookActivationManagerRetryLimit.

Complementos de Excel

Si va a compilar un complemento de Excel, tenga en cuenta las siguientes limitaciones de tamaño al interactuar con el libro.

  • Excel en la web tiene un límite de tamaño de carga para las solicitudes y respuestas de 5 MB. Se producirá RichAPI.Error si se supera ese límite.
  • Un rango está limitado a cinco millones de celdas para obtener operaciones.

Si espera que la entrada del usuario supere estos límites, asegúrese de comprobar los datos antes de llamar a context.sync(). Divida la operación en piezas más pequeñas según sea necesario. Asegúrese de llamar context.sync() a cada sub operación para evitar que esas operaciones se vuelvan a agrupar por lotes.

Estas limitaciones suelen superarse en intervalos grandes. Es posible que el complemento pueda usar RangeAreas para actualizar estratégicamente las celdas dentro de un intervalo mayor. Para obtener más información sobre cómo trabajar con RangeAreas, vea Trabajar con varios rangos simultáneamente en complementos de Excel. Para obtener información adicional sobre cómo optimizar el tamaño de carga en Excel, vea Procedimientos recomendados de límite de tamaño de carga.

Complementos de contenido y panel de tareas

Si algún complemento de contenido o panel de tareas supera los umbrales anteriores en el uso de memoria o núcleo de CPU, o límite de tolerancia para bloqueos, la aplicación de Office correspondiente muestra una advertencia para el usuario. En este momento, el usuario puede hacer lo siguiente:

  • Reiniciar el complemento.
  • No aceptar más alertas de superación de ese umbral. Lo ideal sería que el usuario eliminara el complemento del documento, dado que continuar con el complemento podría provocar errores de estabilidad y rendimiento.

Comprobación de problemas de uso de recursos en el registro de telemetría

Office proporciona un Registro de telemetría que mantiene un registro de determinados eventos (carga, apertura, cierre y errores) de las soluciones de Office que se ejecutan en el equipo local, incluidos los problemas de uso de recursos de una Complemento de Office. Si tiene configurado el registro de telemetría, puede usar Excel para abrir el registro de telemetría en la siguiente ubicación predeterminada en la unidad local.

%Users%\<Current user>\AppData\Local\Microsoft\Office\16.0\Telemetry

Para cada evento de un complemento que sigue el Registro de telemetría, está la fecha y hora en la que ocurrió, el identificador del evento, la gravedad y un breve título descriptivo del evento, el nombre descriptivo y el identificador único del complemento y la aplicación que registró el evento. Puede actualizar el Registro de telemetría para ver los eventos que se siguen actualmente. La siguiente tabla contiene un par de ejemplos de complementos de Outlook que se siguieron en el Registro de telemetría.

Fecha y hora Identificador del evento Severity Cargo Archivo Id. Aplicación
10/8/2022 5:57:10 p.m. 7 No aplicable El manifiesto del complemento se descargó correctamente Who's Who 69cc567c-6737-4c49-88dd-123334943a22 Outlook
10/8/2022 5:57:01 PM 7 No aplicable El manifiesto del complemento se descargó correctamente LinkedIn 333bf46d-7dad-4f2b-8cf4-c19ddc78b723 Outlook

La siguiente tabla contiene los eventos de las Complementos de Office que sigue el Registro de telemetría en general.

Id. de evento Título Severity Description
7 El manifiesto del complemento se descargó correctamente No aplicable La aplicación de Office cargó y leyó correctamente el manifiesto del complemento de Office.
8 No se pudo descargar el manifiesto del complemento Crítico La aplicación de Office no pudo cargar el archivo de manifiesto para el complemento de Office desde el catálogo de SharePoint, el catálogo corporativo o AppSource.
9 No se pudo analizar el marcado del complemento Crítico La aplicación de Office cargó el manifiesto del complemento de Office, pero no pudo leer el marcado HTML de la aplicación.
10 El complemento usó demasiada CPU Crítico La Complemento de Office usó más del 90 % de los recursos de la CPU durante un período de tiempo limitado.
15 El complemento se deshabilitó porque se superó el tiempo de espera de búsqueda de cadenas No aplicable Los complementos de Outlook buscan en el mensaje y la línea de asunto de los correos electrónicos para averiguar si deben mostrarse con una expresión regular. Outlook deshabilitó el complemento de Outlook que aparece en la columna Archivo porque agotó varias veces el tiempo de espera al intentar encontrar una expresión regular.
18 El complemento se cerró correctamente No aplicable La aplicación de Office pudo cerrar el complemento de Office correctamente.
19 Error de tiempo de ejecución del complemento. Crítico Se produjo un problema en la Complemento de Office que provocó un error. Para obtener información detallada, vea el registro de Alertas de Microsoft Office con el Visor de eventos de Windows en el equipo donde se produjo el error.
20 No se pudieron comprobar las licencias del complemento. Crítico La información de licencias de la Complemento de Office no se pudo comprobar y puede haber expirado. Para obtener información detallada, vea el registro de Alertas de Microsoft Office con el Visor de eventos de Windows en el equipo donde se produjo el error.

Para obtener más información, consulte Implementación del Panel de telemetría y Solución de problemas de los archivos de Office y soluciones personalizadas con el registro de telemetría.

Técnicas de diseño e implementación

Aunque los límites de recursos en el uso de CPU y memoria, la tolerancia a bloqueos y la capacidad de respuesta de la interfaz de usuario se aplican a los complementos de Office que se ejecutan solo en clientes de escritorio de Office, la optimización del uso de estos recursos y batería debe ser una prioridad si desea que el complemento funcione satisfactoriamente en todos los clientes y dispositivos auxiliares. La optimización es particularmente importante si el complemento realiza operaciones de ejecución prolongada o administra grandes conjuntos de datos. En la lista siguiente se sugieren algunas técnicas para dividir las operaciones intensivas de CPU o de datos en fragmentos más pequeños para que el complemento pueda evitar un consumo excesivo de recursos y la aplicación de Office pueda seguir respondiendo.

  • En un escenario en el que el complemento necesita leer un gran volumen de datos de un conjunto de datos sin enlazar, puede aplicar la paginación cuando se leen los datos de una tabla o reducir el tamaño de los datos en operaciones de lectura más breves, en lugar de intentar completar la lectura en una sola operación. Puede hacerlo a través del método setTimeout del objeto global para limitar la duración de la entrada y la salida. It also handles the data in defined chunks instead of randomly unbounded data. Otra opción es usar async para controlar las promesas.

  • Si el complemento usa un algoritmo con uso intensivo de CPU para procesar un gran volumen de datos, puede usar Web Workers para realizar la tarea de ejecución prolongada en segundo plano mientras se ejecuta un script individual en primer plano, como mostrar el progreso en la interfaz de usuario. Los Web Workers no bloquean las actividades del usuario y permiten que la página HTML siga respondiendo con normalidad. Para ver un ejemplo de Web Workers, vea Introducción a los Web Workers. Consulte Trabajos web para obtener más información sobre la API de trabajos web.

  • Si el complemento usa un algoritmo con uso intensivo de CPU, pero puede dividir la entrada o salida de los datos en conjuntos más pequeños, considere crear un servicio web, transferir los datos al servicio web para quitar la carga de la CPU y esperar una devolución de llamada asincrónica.

  • Pruebe el complemento con el mayor volumen de datos esperado y restrinja el procesamiento que puede realizar el complemento hasta ese límite.

Mejoras de rendimiento con las API específicas de la aplicación

Las sugerencias de rendimiento de Uso del modelo de API específico de la aplicación proporcionan instrucciones al usar las API específicas de la aplicación para Excel, OneNote, Visio y Word. En resumen, debe:

Objetos proxy innecesarios sin seguimiento

Los objetos proxy permanecen en la memoria hasta que RequestContext.sync() se llama a . Las operaciones por lotes de gran tamaño pueden generar una gran cantidad de objetos proxy que el complemento solo necesitan una vez y se pueden liberar de la memoria antes de ejecutar el lote.

El untrack() método libera el objeto de la memoria. Este método se implementa en muchos objetos de proxy de API específicos de la aplicación. Llamar a untrack() después de que el complemento se haya realizado con el objeto debería producir una ventaja de rendimiento notable al usar un gran número de objetos proxy.

Nota:

Range.untrack() es un método abreviado para ClientRequestContext.trackedObjects.remove(thisRange). Si desea dejar de seguir un objeto proxy, quítelo de la lista de objetos seguidos en el contexto.

El siguiente ejemplo de código de Excel rellena un rango seleccionado con datos, una celda a la vez. Después de agregar el valor a la celda, el rango que representa esa celda se deja de seguir. Ejecute este código con un rango seleccionado de 10 000 a 20 000 celdas, primero con la línea cell.untrack() y, a continuación, sin ella. Notará que el código se ejecuta más rápido con la línea cell.untrack() que sin ella. También es posible que observe un tiempo de respuesta más rápido posteriormente, ya que el paso de limpieza requiere menos tiempo.

Excel.run(async (context) => {
    const largeRange = context.workbook.getSelectedRange();
    largeRange.load(["rowCount", "columnCount"]);
    await context.sync();

    for (let i = 0; i < largeRange.rowCount; i++) {
        for (let j = 0; j < largeRange.columnCount; j++) {
            let cell = largeRange.getCell(i, j);
            cell.values = [[i *j]];

            // Call untrack() to release the range from memory.
            cell.untrack();
        }
    }

    await context.sync();
});

Tenga en cuenta que la necesidad de anular el seguimiento de objetos solo es importante cuando se trabaja con miles de ellos. La mayoría de los complementos no necesitarán administrar el seguimiento de objetos proxy.

Vea también