Partager via


Limites des ressources et optimisation des performances pour les compléments Office

Les compléments de qualité doivent respecter des exigences spécifiques en matière d’utilisation du cœur de processeur, d’utilisation de la mémoire, de fiabilité et, pour les compléments Outlook, de temps de réponse d’évaluation des expressions régulières. Elles permettent à l’utilisateur de bénéficier de bonnes performances et contribuent également à atténuer les attaques par déni de service. Veillez à tester votre complément Office sur votre application Office cible à l’aide d’une plage de données possibles et à mesurer ses performances par rapport aux limites d’utilisation de l’exécution suivantes.

Limites d’utilisation des ressources pour les compléments

Les limites de ressources d’exécution suivantes s’appliquent à tous les compléments exécutés dans les clients Office sur Windows et Mac, mais pas sur les applications mobiles ou dans un navigateur.

  • Utilisation du cœur de processeur : seuil d’utilisation du cœur de processeur unique de 90 %, observé 3 fois par intervalles de 5 secondes par défaut.

    Si le client Office détecte que l’utilisation du cœur du processeur d’un complément est supérieure à la valeur seuil, il affiche un message demandant si l’utilisateur souhaite continuer à exécuter le complément. Si l’utilisateur choisit de continuer, le client Office ne le demande pas à nouveau pendant cette session de modification. L’intervalle par défaut pour qu’un client Office case activée utilisation du cœur du processeur est toutes les 5 secondes. Les administrateurs peuvent utiliser la clé de Registre AlertInterval pour augmenter le seuil afin de réduire l’affichage de ce message d’avertissement si les utilisateurs exécutent des compléments gourmands en ressources processeur.

  • Utilisation de la mémoire - Seuil d’utilisation de mémoire par défaut, qui est déterminé de manière dynamique en fonction de la mémoire physique disponible de l’appareil.

    Par défaut, lorsqu’un client Office détecte que l’utilisation de la mémoire physique sur un appareil dépasse 80 % de la mémoire disponible, le client commence à surveiller l’utilisation de la mémoire du complément. Cette opération s’effectue au niveau du document pour les compléments de contenu et du volet Office et au niveau de la boîte aux lettres pour les compléments Outlook. À un intervalle par défaut de 5 secondes, le client avertit l’utilisateur si l’utilisation de la mémoire physique pour un ensemble de compléments au niveau du document ou de la boîte aux lettres dépasse 50 %. Cette limite d’utilisation de la mémoire est basée sur la mémoire physique plutôt que sur la mémoire virtuelle afin de garantir de bonnes performances sur les appareils disposant d’une mémoire vive (RAM) limitée, par exemple les tablettes. Les administrateurs peuvent remplacer ce paramètre dynamique par une limite explicite en utilisant la clé de Registre Windows MemoryAlertThreshold comme paramètre global. Ils peuvent également ajuster l’intervalle d’alerte avec la clé AlertInterval .

  • Tolérance aux incidents : limite par défaut de 4 incidents pendant la session du document.

    Les administrateurs peuvent ajuster le seuil relatif aux incidents en utilisant la clé de registre RestartManagerRetryLimit.

  • Blocage de l’application : seuil d’absence de réponse prolongé de 5 secondes.

    Cela affecte l’expérience utilisateur du complément et de l’application Office. Lorsque cela se produit, l’application Office redémarre automatiquement tous les compléments actifs pour un document ou une boîte aux lettres (le cas échéant), et avertit l’utilisateur du complément qui ne répond plus. Les compléments atteignent ce seuil lorsqu’ils ne produisent pas régulièrement de traitement lors de l’exécution de tâches de longue durée. Des techniques sont répertoriées plus loin dans cet article pour vous assurer que le complément ne bloque pas l’application Office. Les administrateurs ne peuvent pas remplacer ce seuil.

Compléments de volet Office et de contenu

Si un complément de contenu ou de volet Office dépasse les seuils précédents en matière d’utilisation du cœur de processeur ou de la mémoire, ou si la limite de tolérance pour les incidents, l’application Office correspondante affiche un avertissement pour l’utilisateur. À ce stade, l’utilisateur peut effectuer l’une des actions suivantes :

  • Redémarrer le complément.
  • Annuler d’autres alertes concernant le dépassement de ce seuil. Dans l’idéal, l’utilisateur doit ensuite supprimer le complément du document. L’utilisation continue du complément risquerait d’autres problèmes de performances et de stabilité.

Compléments Outlook

Si un complément Outlook dépasse les seuils précédents pour l’utilisation du cœur de processeur ou de la mémoire, ou la limite de tolérance pour les incidents, le complément devient indisponible. Le Centre Administration Exchange affiche les status du complément.

Remarque

Même si seuls Outlook sur Windows (classique) et sur Mac surveillent l’utilisation des ressources, si l’un de ces clients rend un complément Outlook indisponible, ce complément devient également indisponible dans Outlook sur le web, sur les appareils mobiles et dans le nouvel Outlook sur Windows.

En plus des règles de cœur de processeur, de mémoire et de fiabilité, les compléments Outlook doivent respecter les règles d’activation suivantes.

  • Temps de réponse des expressions régulières - Seuil par défaut de 1 000 millisecondes pour Outlook afin d’évaluer toutes les expressions régulières contenues dans le manifeste d’un complément Outlook. Le dépassement du seuil oblige Outlook à retenter l’évaluation un peu plus tard.

    Les administrateurs peuvent ajuster cette valeur de seuil par défaut de 1 000 millisecondes à l’aide d’une stratégie de groupe ou d’un paramètre spécifique à l’application pour la clé OutlookActivationAlertThreshold dans le Registre Windows.

  • Réévaluation des expressions régulières : limite par défaut de 3 fois pour qu’Outlook réévalue toutes les expressions régulières dans un manifeste. Si l’évaluation ne parvient pas à s’évaluer dans la limite de temps 3 fois, Outlook rend le complément indisponible.

    Les administrateurs peuvent ajuster ce nombre de fois pour réessayer l’évaluation à l’aide d’une stratégie de groupe ou d’un paramètre spécifique à l’application pour la clé OutlookActivationManagerRetryLimit dans le Registre Windows.

Compléments Excel

Les compléments Excel ont des limites de transfert de données importantes lors de l’interaction avec le classeur.

  • Excel sur le web a une limite de taille de charge utile de 5 Mo pour les demandes et les réponses. L’erreur RichAPI.Error est déclenchée en cas de dépassement de cette limite.
  • Une plage est limitée à 5 000 000 cellules pour les opérations de lecture.

Si vous prévoyez que l’entrée utilisateur dépasse ces limites, case activée les données avant d’appeler context.sync(). Fractionnez l’opération en petits morceaux en fonction des besoins. Appelez context.sync() chaque sous-opération pour éviter que ces opérations ne se répètent par lots.

Ces limites sont généralement dépassées par de grandes plages. Votre complément peut être en mesure d’utiliser RangeAreas pour mettre à jour stratégiquement les cellules d’une plage plus grande. Pour plus d’informations sur l’utilisation de RangeAreas, voir Utiliser plusieurs plages simultanément dans les compléments Excel. Pour plus d’informations sur l’optimisation de la taille de la charge utile dans Excel, consultez Meilleures pratiques en matière de limite de taille de charge utile.

Vérifier les problèmes d’utilisation des ressources dans le journal de télémétrie

Office fournit un journal de télémétrie qui conserve un enregistrement de certains événements (chargement, ouverture, fermeture et erreurs) pour les solutions Office exécutées sur l’ordinateur local. Cela inclut les problèmes d’utilisation des ressources dans un complément Office. Si le journal de télémétrie est configuré, vous pouvez utiliser Excel pour ouvrir le journal de télémétrie à l’emplacement par défaut suivant sur votre lecteur local.

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

Le journal de télémétrie comprend pour chaque événement suivi pour un complément, les date/heure de l’occurrence, l’ID d’événement, la gravité et une courte description de l’événement, le nom convivial et l’ID unique du complément, ainsi que l’application qui a enregistré l’événement. Actualisez le journal de télémétrie pour voir les événements suivis actuels. Le tableau suivant répertorie des exemples de compléments Outlook qui ont été suivis dans le journal de télémétrie.

Date/Heure ID d’événement Severity Titre Fichier ID Application
8/10/2022 17:57:10 PM 7 Non applicable Le manifeste du complément a été correctement téléchargé Who’s Who 69cc567c-6737-4c49-88dd-123334943a22 Outlook
8/10/2022 17:57:01 PM 7 Non applicable Le manifeste du complément a été correctement téléchargé LinkedIn 333bf46d-7dad-4f2b-8cf4-c19ddc78b723 Outlook

Le tableau suivant répertorie les événements suivis par le journal de télémétrie pour les compléments Office.

ID d’événement Titre Severity Description
7 Le manifeste du complément a été correctement téléchargé Non applicable Le manifeste du complément Office a été correctement chargé et lu par l’application Office.
8 Échec du téléchargement du manifeste du complément Critique L’application Office n’a pas pu charger le fichier manifeste du complément Office à partir du catalogue SharePoint, du catalogue d’entreprise ou d’AppSource.
9 Impossible d’analyser le balisage du complément Critique L’application Office a chargé le manifeste du complément Office, mais n’a pas pu lire le balisage HTML de l’application.
10 Le complément a trop sollicité le processeur Critique L’Complément Office a utilisé plus de 90 % des ressources du processeur sur une période de temps définie.
15 Le complément a été désactivé en raison de l’expiration de la recherche de chaîne Non applicable §LTA Les compléments Outlook recherchent la ligne d’objet et le corps du message d’un courrier électronique pour déterminer s’ils doivent être affichés avec une expression régulière. Le complément Outlook répertorié dans la colonne Fichier a été désactivé par Outlook, car il a expiré à plusieurs reprises lors d’une tentative de mise en correspondance d’une expression régulière.
18 Le complément a été fermé Non applicable L’application Office a pu fermer correctement le complément Office.
19 Le complément a rencontré une erreur d’exécution Critique L'Complément Office a rencontré un problème qui l'a empêchée de s'exécuter. Pour plus de détails, consultez le journal Alertes Microsoft Office à l’aide de l’Observateur d’événements Windows sur l’ordinateur sur lequel l’erreur s’est produite.
20 Le complément n’a pas pu vérifier la licence Critique Les informations de licence de l'Complément Office n'ont pas pu être vérifiées et la licence a peut-être expiré. Pour plus de détails, consultez le journal Alertes Microsoft Office à l’aide de l’Observateur d’événements Windows sur l’ordinateur sur lequel l’erreur s’est produite.

Pour plus d’informations, consultez Déployer le Tableau de bord de télémétrie et Dépannage des fichiers et des solutions personnalisées d’Office avec le journal de télémétrie

Techniques de conception et d’implémentation

Bien que les limites de ressources sur l’utilisation du processeur et de la mémoire, la tolérance d’incident et la réactivité de l’interface utilisateur s’appliquent aux compléments Office qui s’exécutent uniquement sur les clients de bureau Office, l’optimisation doit être une priorité si vous souhaitez que votre complément fonctionne de manière satisfaisante sur tous les clients et appareils de prise en charge. L’optimisation est particulièrement importante si votre complément effectue des opérations de longue durée ou manipule de grands jeux de données. La liste suivante suggère certaines techniques pour diviser les opérations gourmandes en ressources processeur ou gourmandes en données en segments plus petits afin que votre complément évite une consommation excessive de ressources et maintienne la réactivité de l’application Office.

  • Si votre complément doit lire un grand volume de données à partir d’un jeu de données indépendant, vous pouvez appliquer la pagination lors de la lecture des données d’une table ou réduire la taille des données dans chaque opération de lecture plus courte, plutôt que de tenter d’effectuer la lecture en une seule opération. Pour ce faire, vous pouvez utiliser la méthode setTimeout de l’objet global pour limiter la durée d’entrée et de sortie. It also handles the data in defined chunks instead of randomly unbounded data. Une autre option consiste à utiliser async pour gérer vos promesses.

  • Si votre complément utilise un algorithme gourmand en ressources processeur pour traiter un grand volume de données, vous pouvez utiliser des workers web pour effectuer la tâche de longue durée en arrière-plan tout en exécutant un script distinct au premier plan, comme l’affichage de la progression dans l’interface utilisateur. Les workers web ne bloquent pas les activités des utilisateurs et permettent à la page HTML de rester réactive. Pour obtenir un exemple de workers web, consultez The Basics of Web Workers.

  • Si votre complément utilise un algorithme gourmand en ressources processeur, mais que vous pouvez diviser l’entrée ou la sortie des données en ensembles plus petits, envisagez de créer un service web, de transmettre les données au service web pour décharger le processeur et d’attendre un rappel asynchrone.

  • Veillez à tester votre complément par rapport au volume de données le plus important possible, puis limitez votre complément pour lui permettre d’atteindre cette limite.

Améliorations des performances avec les API spécifiques à l’application

Les conseils sur les performances dans Utilisation du modèle d’API spécifique à l’application fournissent des conseils lors de l’utilisation des API spécifiques à l’application pour Excel, OneNote, Visio et Word. En résumé, vous devez :

Annuler le suivi des objets proxy inutiles

Les objets proxy sont conservés en mémoire jusqu’à ce RequestContext.sync() que soit appelé. Les opérations par lots volumineux peuvent générer un grand nombre d’objets proxy qui sont uniquement utiles une fois pour le complément et peuvent être publiés à partir de la mémoire avant l’exécution du lot.

La untrack() méthode libère l’objet de la mémoire. Cette méthode est implémentée sur de nombreux objets proxy d’API spécifiques à l’application. L’appel untrack() d’une fois que votre complément a été effectué avec l’objet doit produire un avantage notable en matière de performances lors de l’utilisation d’un grand nombre d’objets proxy.

Remarque

Range.untrack() est un raccourci pour ClientRequestContext.trackedObjects.remove(thisRange). N’importe quel objet proxy peut être non suivi en le supprimant de la liste d’objets suivis dans le contexte.

L’exemple de code Excel suivant remplit une plage sélectionnée avec des données, une cellule à la fois. Une fois que la valeur est ajoutée à la cellule, la plage représentant cette cellule est non suivie. Exécuter tout d’abord ce code avec une plage sélectionnée de 10 000 à 20 000 cellules, avec la cell.untrack() ligne et puis sans. Vous devez remarquer que le code est exécuté plus rapidement avec la cell.untrack() ligne que sans elle. Vous pouvez également remarquer un temps de réponse plus rapide par la suite, étant donné que l’étape de nettoyage prend moins de temps.

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();
});

Notez que la nécessité d’annuler le suivi des objets n’est importante que lorsque vous en avez affaire à des milliers. La plupart des compléments n’ont pas besoin de gérer le suivi des objets proxy.

Voir aussi