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 del uso de recursos de tiempo de ejecución se aplican a los complementos que se ejecutan en clientes de Office para Windows y OS X, pero no 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 Office complementos. 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 Office de destino mediante un rango de datos posibles y medir 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 Office cliente compruebe el uso principal de la CPU es cada 5 segundos. Si el Office detecta que el uso principal de CPU de un complemento está por encima del valor de umbral, muestra un mensaje en el que se le pregunta si el usuario desea continuar ejecutando el complemento. Si el usuario decide continuar, el 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 de correo 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 MemoryAlertThreshold Windows como una configuración global, e ir ajustando el intervalo de alerta 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 Office aplicación. Cuando esto ocurre, la aplicación Office reinicia automáticamente todos los complementos activos de un documento o buzón (cuando corresponda) y advierte al usuario sobre qué complemento no responde. 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 de uso del núcleo de CPU o de la memoria, o si excede el límite de tolerancia de bloqueos, Outlook deshabilita el complemento. El Centro de administración de Exchange muestra el estado deshabilitado de la aplicación.

Nota

Aunque solo los clientes enriquecidos de Outlook y no Outlook en la web y en dispositivos móviles supervisan el uso de recursos, si un cliente enriquecido deshabilita un complemento de Outlook, este complemento también se deshabilita para el uso en Outlook en la web y en dispositivos móviles.

Además de las reglas de núcleo de CPU, memoria y confiabilidad, Outlook complementos deben observar las siguientes reglas de 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 la evaluación falla las tres veces al superar el umbral aplicable (que es el valor predeterminado de 1.000 milisegundos o un valor especificado por OutlookActivationAlertThreshold, si esa configuración existe en el Registro de Windows), Outlook deshabilita el complemento Outlook. El Centro de administración de Exchange muestra el estado deshabilitado y el complemento está deshabilitado para su uso en los clientes enriquecidos de Outlook y en los dispositivos Outlook en la Web y 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 está creando un complemento 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 context.sync() a . Divida la operación en partes más pequeñas según sea necesario. Asegúrese de llamar a cada sub-operación para evitar que esas context.sync() operaciones se vuelvan a procesar por lotes.

Estas limitaciones suelen ser superadas por intervalos grandes. Es posible que el complemento pueda usar RangeAreas para actualizar estratégicamente las celdas dentro de un rango mayor. Para obtener más información sobre cómo trabajar con RangeAreas , vea Trabajar con varios intervalos simultáneamente en Excel complementos. Para obtener información adicional acerca de cómo optimizar el tamaño de carga Excel, vea Payload size limit best practices.

Complementos de contenido y panel de tareas

Si algún complemento de panel de tareas o contenido supera los umbrales anteriores en el uso de memoria o núcleo de CPU, o límite de tolerancia para bloqueos, la aplicación 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.

Comprobar 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\15.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 Id. de evento Gravedad Título Archivo ID Aplicación
8/10/2012 5:57:10 p. m. 7 El manifiesto del complemento se descargó correctamente Who's Who 69cc567c-6737-4c49-88dd-123334943a22 Outlook
10/8/2012 5:57:01 p. m. 7 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 Gravedad Descripción
7 El manifiesto del complemento se descargó correctamente El manifiesto del complemento Office se cargó y leyó correctamente por la Office aplicación.
8 No se pudo descargar el manifiesto del complemento Crítico La Office no pudo cargar el archivo de manifiesto del complemento 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 Office cargó el manifiesto Office complemento, 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 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 La Office la aplicación pudo cerrar el Office complemento 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

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

  • 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 entrada y 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 de uso intensivo de la CPU para procesar un gran volumen de datos, puede usar trabajos web para realizar la tarea de larga duración en segundo plano mientras se ejecuta un script diferente en primer plano, como mostrar el progreso en la interfaz de usuario. Los trabajos web no bloquean las actividades de usuario y permiten que la página HTML permanezca receptiva. Para ver un ejemplo de los trabajos web, vea Datos básicos de los trabajos web. Vea Trabajo web para obtener más información sobre la API para 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 en 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:

Desa seguimiento de objetos proxy innecesarios

Los objetos proxy persisten en la memoria hasta RequestContext.sync() que se llama. 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 proxy de API específicos de la aplicación. Llamar después de que el complemento haya terminado con el objeto debe producir una ventaja de rendimiento notable untrack() 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 Excel de código rellena un intervalo 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) => {
    var largeRange = context.workbook.getSelectedRange();
    largeRange.load(["rowCount", "columnCount"]);
    await context.sync();

    for (var i = 0; i < largeRange.rowCount; i++) {
        for (var j = 0; j < largeRange.columnCount; j++) {
            var 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 desa seguimiento de objetos solo es importante cuando se trata de miles de ellos. La mayoría de los complementos no necesitarán administrar el seguimiento de objetos proxy.

Vea también