Limites des ressources et optimisation des performances pour les compléments Office
Afin d’offrir la meilleure expérience utilisateur, assurez-vous que votre complément Office fonctionne dans les limites prévues en matière d’utilisation du cœur du processeur et de la mémoire, ainsi qu’en matière de fiabilité et, pour les compléments Outlook, de temps de réponse lors de l’évaluation des expressions régulières. Ces limites d’utilisation des ressources d’exécution s’appliquent aux compléments exécutés dans les clients Office sur Windows et OS X, mais pas sur les applications mobiles ou dans un navigateur.
Par ailleurs, cette rubrique suggère des techniques de conception et d’implémentation de complément qui permettent de mieux contrôler les performances des compléments sur ordinateurs de bureau et périphériques mobiles.
Limites d’utilisation des ressources pour les compléments
Les limites d’utilisation des ressources d’exécution s’appliquent à tous les types de compléments Office. Ces limites permettent de garantir les performances de vos utilisateurs et d’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.
Utilisation du cœur du processeur - Seuil d’utilisation d’un seul cœur de processeur de 90 %, observé à trois reprises dans des intervalles par défaut de 5 secondes.
L’intervalle par défaut pour qu’un client Office vérifie l’utilisation du cœur du processeur est toutes les 5 secondes. 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. Les administrateurs peuvent souhaiter utiliser la clé de registre AlertInterval pour augmenter le seuil et réduire l’affichage de ce message d’avertissement si les utilisateurs exécutent des compléments faisant appel au processeur de manière intensive.
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, au niveau du document pour les compléments de contenu et du volet Office, et au niveau d’une 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 ajustent l’intervalle d’alerte à l’aide de la clé AlertInterval comme paramètre global.
Tolérance d’incident - Limite par défaut de 4 incidents pour un complément.
Les administrateurs peuvent ajuster le seuil relatif aux incidents en utilisant la clé de registre RestartManagerRetryLimit.
Blocage d’application - Limitation à 5 secondes du seuil de blocage prolongé d’un complément.
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 peuvent atteindre ce seuil lorsqu’ils ne cèdent pas régulièrement le traitement lors de l’exécution de tâches longues. Il existe des techniques permettant de garantir qu’aucun blocage ne se produira. Les administrateurs ne peuvent pas remplacer ce seuil.
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 d’administration Exchange affiche l’état 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.
À l’aide d’une stratégie de groupe ou d’un paramètre spécifique de l’application dans le Registre Windows, les administrateurs peuvent ajuster cette valeur seuil par défaut de 1 000 millisecondes dans le paramètre OutlookActivationAlertThreshold.
Réévaluation des expressions régulières : limite par défaut de trois fois pour qu’Outlook réévalue toutes les expressions régulières dans un manifeste. Si l’évaluation échoue trois fois en dépassant le seuil applicable (qui est soit la valeur par défaut de 1 000 millisecondes, soit une valeur spécifiée par OutlookActivationAlertThreshold, si ce paramètre existe dans le Registre Windows), Outlook rend le complément indisponible. Le Centre d’administration Exchange affiche l’état du complément et le complément n’est pas disponible dans Outlook sur le web, sur Windows (nouveau et classique), sur Mac et sur les appareils mobiles.
À l’aide d’une stratégie de groupe ou d’un paramètre spécifique de l’application dans le Registre Windows, les administrateurs peuvent ajuster ce nombre de tentatives d’évaluation dans le paramètre OutlookActivationManagerRetryLimit.
Compléments Excel
Si vous créez un complément Excel, tenez compte des limitations de taille suivantes 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 à cinq millions de cellules pour les opérations d’obtention.
Si vous vous attendez à ce que l’entrée utilisateur dépasse ces limites, veillez à vérifier les données avant d’appeler context.sync()
. Fractionnez l’opération en petits morceaux en fonction des besoins. Veillez à appeler context.sync()
pour chaque sous-opération afin d’éviter que ces opérations ne soient à nouveau regroupées.
Ces limitations 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.
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 ; la poursuite du complément risquerait d’autres problèmes de performances et de stabilité.
Vérifier les problèmes d’utilisation des ressources dans le journal de télémétrie
Office propose un journal de télémétrie qui tient à jour un enregistrement de certains événements (chargement, ouverture, fermeture et erreurs) des solutions Office qui s’exécutent sur l’ordinateur local, notamment les problèmes d’utilisation des ressources dans une 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. Vous pouvez actualiser le journal de télémétrie pour afficher les événements suivis. 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é | 333bf46d-7dad-4f2b-8cf4-c19ddc78b723 | Outlook |
Le tableau suivant répertorie les événements que le journal de télémétrie suit pour les Compléments Office en général.
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 aux incidents et la réactivité de l’interface utilisateur s’appliquent aux compléments Office s’exécutant uniquement sur les clients de bureau Office, l’optimisation de l’utilisation de ces ressources et de la batterie 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 décomposer les opérations gourmandes en ressources ou en données en blocs plus petits afin que votre complément puisse éviter une consommation excessive des ressources et que l’application Office puisse rester réactive.
Dans un scénario où votre complément a besoin de lire un important volume de données à partir d’un jeu de données illimité, vous pouvez appliquer la pagination lors de la lecture des données dans une table ou réduire la taille des données à chaque opération de lecture raccourcie, plutôt que de tenter de terminer 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. Pour plus d’informations sur l’API Web Workers, consultez Web Workers .
Si votre complément utilise un algorithme qui sollicite l’UC de manière intensive et si vous pouvez décomposer les entrées ou sorties de données en jeux de données de plus petite taille, créez un service web afin de lui passer les données et d’alléger la charge de l’UC, puis attendez 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 :
- Chargez uniquement les propriétés nécessaires.
-
Réduisez le nombre d’appels sync(). Pour plus d’informations sur la gestion
sync
des appels dans votre code, consultez Éviter d’utiliser la méthode context.sync dans les boucles. - Réduisez le nombre d’objets proxy créés. Vous pouvez également annuler le suivi des objets proxy, comme décrit dans la section suivante.
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’auront pas besoin de gérer le suivi des objets proxy.