Ressourcengrenzen und Leistungsoptimierung für Office-Add-Ins

Um für Ihre Benutzer eine höchstmögliche Benutzerfreundlichkeit zu gewährleisten, müssen Sie sicherstellen, dass Ihre Office-Add-In im Rahmen bestimmter Grenzwerte für die Auslastung der CPU-Kerne und des Arbeitsspeichers, für die Zuverlässigkeit und im Fall von Outlook-Add-Ins für die Antwortzeit für die Überprüfung regulärer Ausdrücke funktioniert. Diese Grenzwerte für die Nutzung von Laufzeitressourcen gelten für Add-Ins, die in Office-Clients unter Windows und OS X ausgeführt werden, jedoch nicht für mobile Apps oder in einem Browser.

Sie können außerdem die Leistung Ihrer Add-Ins auf Desktop- und mobilen Geräten verbessern, indem Sie die Verwendung der Ressourcen in Ihrem Add-In-Design und der Implementierung optimieren.

Grenzwerte für die Ressourcennutzung für Add-Ins

Grenzwerte für die Nutzung von Laufzeitressourcen gelten für alle Arten von Office-Add-Ins. Diese Grenzwerte tragen dazu bei, die Leistung für Ihre Benutzer sicherzustellen und Denial-of-Service-Angriffe zu minimieren. Stellen Sie sicher, dass Sie Ihr Office-Add-In in Ihrer Office-Zielanwendung testen, indem Sie eine Reihe möglicher Daten verwenden, und messen Sie die Leistung anhand der folgenden Laufzeitnutzungslimits.

  • CPU-Kern-Auslastung – Ein Grenzwert für die Auslastung eines einzelnen CPU-Kerns in Höhe von 90 % (drei Mal in 5-Sekunden-Standardintervallen beobachtet).

    Das Standardintervall für einen Office-Client zum Überprüfen der CPU-Kernauslastung beträgt alle 5 Sekunden. Wenn der Office-Client erkennt, dass die CPU-Kernauslastung eines Add-Ins über dem Schwellenwert liegt, wird eine Meldung mit der Frage angezeigt, ob der Benutzer die Ausführung des Add-Ins fortsetzen möchte. Wenn der Benutzer den Vorgang fortsetzen möchte, fragt der Office-Client den Benutzer während dieser Bearbeitungssitzung nicht erneut ab. Administratoren möchten vielleicht den Registrierungsschlüssel AlertInterval verwenden, um den Schwellenwert zu erhöhen, damit die Anzeige dieser Warnmeldung reduziert wird, wenn Benutzer CPU-intensive Add-Ins ausführen.

  • Arbeitsspeicherauslastung – Ein Grenzwert für die standardmäßige Arbeitsspeicherauslastung, der basierend auf dem verfügbaren physischen Arbeitsspeicher des Geräts dynamisch festgelegt wird.

    Wenn ein Office-Client erkennt, dass die physische Speicherauslastung auf einem Gerät 80 % des verfügbaren Arbeitsspeichers überschreitet, beginnt der Client standardmäßig mit der Überwachung der Speicherauslastung des Add-Ins, auf Dokumentebene für Inhalts- und Aufgabenbereich-Add-Ins und auf Postfachebene für Outlook-Add-Ins. In einem Standardintervall von 5 Sekunden warnt der Client den Benutzer, wenn die physische Speicherauslastung für eine Gruppe von Add-Ins auf Dokument- oder Postfachebene 50 % überschreitet. Bei diesem Grenzwert für die Arbeitsspeicherauslastung wird physischer und nicht virtueller Speicher verwendet, um die Leistung auf Geräten mit eingeschränktem RAM wie Tablets sicherzustellen. Administratoren können diese dynamische Einstellung mit einem expliziten Grenzwert überschreiben, indem sie den Windows-Registrierungsschlüssel MemoryAlertThreshold als globale Einstellung verwenden und das Warnungsintervall mithilfe des AlertInterval-Schlüssels als globale Einstellung anpassen.

  • Absturztoleranz – Ein standardmäßiger Grenzwert von 4 Abstürzen für ein Add-In.

    Administratoren können den Schwellenwert für Abstürze mithilfe des Registrierungsschlüssels RestartManagerRetryLimit anpassen.

  • Nicht reagierende Anwendungen – Grenzwert für den Zeitraum, in der ein Add-In nicht reagiert, von 5 Sekunden.

    Dies wirkt sich auf die Benutzerfreundlichkeit des Add-Ins und der Office-Anwendung aus. In diesem Fall startet die Office-Anwendung automatisch alle aktiven Add-Ins für ein Dokument oder Postfach (falls zutreffend) neu und warnt den Benutzer, welches Add-In nicht mehr reagiert. Add-ins können diesen Schwellenwert erreichen, wenn sie beim Ausführen lang laufender Aufgaben nicht regelmäßig eine Verarbeitung erzielen. Es gibt Techniken, um sicherzustellen, dass keine Blockierung auftritt. Administratoren können diesen Schwellenwert nicht überschreiben.

Outlook-Add-Ins

Wenn ein Outlook-Add-In die obigen Schwellenwerte für die CPU-Kern- oder Arbeitsspeicherauslastung oder die Toleranzgrenze für Abstürze überschreitet, ist das Add-In nicht mehr verfügbar. Exchange Admin Center zeigt die Add-In-status an.

Hinweis

Obwohl nur Outlook unter Windows und auf Mac die Ressourcennutzung überwachen, ist dieses Add-In auch in Outlook im Web, auf mobilen Geräten und in outlook unter Windows (Vorschauversion) nicht verfügbar, wenn einer dieser Clients ein Outlook-Add-In nicht verfügbar macht.

Zusätzlich zu den CPU-Kern-, Arbeitsspeicher- und Zuverlässigkeitsregeln sollten Outlook-Add-Ins die folgenden Regeln für die Aktivierung beachten.

  • Antwortzeit für reguläre Ausdrücke – Für Outlook gilt ein standardmäßiger Grenzwert von 1.000 Millisekunden für die Überprüfung aller regulären Ausdrücke im Manifest einem Outlook-Add-In. Bei einer Überschreitung des Grenzwerts versucht Outlook die Überprüfung zu einem späteren Zeitpunkt.

    Mithilfe einer Gruppenrichtlinie oder anwendungsspezifischen Einstellung in der Windows-Registrierung können Administratoren diesen standardmäßigen Grenzwert von 1.000 Millisekunden in der Einstellung OutlookActivationAlertThreshold anpassen.

  • Erneute Überprüfung regulärer Ausdrücke – Für Outlook gilt ein standardmäßiger Grenzwert von drei Versuchen für die erneute Überprüfung aller regulären Ausdrücke in einem Manifest. Wenn die Auswertung dreimal fehlschlägt, indem der anwendbare Schwellenwert überschritten wird (dies ist entweder der Standardwert von 1.000 Millisekunden oder ein von OutlookActivationAlertThreshold angegebener Wert, wenn diese Einstellung in der Windows-Registrierung vorhanden ist), macht Outlook das Add-In nicht verfügbar. Exchange Admin Center zeigt das Add-In status an, und das Add-In ist in Outlook unter Windows (klassisch und neu (Vorschau)), auf Mac, im Web und auf mobilen Geräten nicht verfügbar.

    Mithilfe einer Gruppenrichtlinie oder anwendungsspezifischen Einstellung in der Windows-Registrierung können Administratoren die Anzahl der Versuche für die erneute Überprüfung in der Einstellung OutlookActivationManagerRetryLimit anpassen.

Excel-Add-Ins

Wenn Sie ein Excel-Add-In erstellen, beachten Sie die folgenden Größeneinschränkungen, wenn Sie mit der Arbeitsmappe interagieren.

  • Excel Im Web verfügt über ein Nutzlastgrößenlimit von 5MB für Anfragen und Antworten. RichAPI.Error wird ausgelöst, wenn dieser Grenzwert überschritten wird.
  • Ein Bereich ist für Get-Vorgänge auf fünf Millionen Zellen beschränkt.

Wenn Sie davon ausgehen, dass die Benutzereingabe diese Grenzwerte überschreitet, überprüfen Sie die Daten, bevor Sie aufrufen context.sync(). Teilen Sie den Vorgang nach Bedarf in kleinere Teile auf. Achten Sie darauf, für jeden Untervorgang aufzurufen context.sync() , um zu vermeiden, dass diese Vorgänge erneut in einem Batch zusammengefasst werden.

Diese Einschränkungen werden in der Regel durch große Bereiche überschritten. Ihr Add-In kann möglicherweise RangeAreas verwenden, um Zellen innerhalb eines größeren Bereichs strategisch zu aktualisieren. Weitere Informationen zum Arbeiten mit RangeAreasfinden Sie unter Arbeiten mit mehreren Bereichen gleichzeitig in Excel-Add-Ins. Weitere Informationen zum Optimieren der Nutzlastgröße in Excel finden Sie unter Bewährte Methoden zur Begrenzung der Nutzlastgröße.

Aufgabenbereich- und Inhalts-Add-Ins

Wenn ein Inhalts- oder Aufgabenbereich-Add-In die vorhergehenden Schwellenwerte für die CPU-Kern- oder Arbeitsspeicherauslastung oder das Toleranzlimit für Abstürze überschreitet, zeigt die entsprechende Office-Anwendung eine Warnung für den Benutzer an. At this point, the user can do one of the following:

  • Das Add-In neu starten.
  • Weitere Warnungen hinsichtlich der Überschreitung dieses Grenzwerts unterdrücken. Im Optimalfall löscht der Benutzer das Add-In aus dem Dokument, da eine weitere Verwendung des Add-Ins zusätzliche Leistungs- und Stabilitätsprobleme verursachen kann.

Überprüfen von Ressourcennutzungsproblemen im Telemetrieprotokoll

Office verfügt über ein Telemetrieprotokoll, in dem bestimmte Ereignisse von Office-Lösungen aufgezeichnet werden (Laden, Öffnen, Schließen und Fehler), die auf einem lokalen Computer ausgeführt werden, darunter Ressourcennutzungsprobleme in einer Office-Add-In. Wenn Sie das Telemetrieprotokoll eingerichtet haben, können Sie Excel verwenden, um das Telemetrieprotokoll am folgenden Standardspeicherort auf Ihrem lokalen Laufwerk zu öffnen.

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

Für jedes Ereignis, das vom Telemetrieprotokoll für ein Add-In nachverfolgt wird, wird Folgendes angegeben: Datum/Uhrzeit des Auftretens, Ereignis-ID, Schweregrad, kurzer aussagekräftiger Titel für das Ereignis, Anzeigename und eindeutige ID des Add-Ins sowie die Anwendung, von der das Ereignis protokolliert wurde. Sie können das Telemetrieprotokoll aktualisieren, um die derzeit nachverfolgten Ereignisse anzuzeigen. In der folgenden Tabelle sind einige Beispiele für Outlook-Add-Ins aufgeführt, die im Telemetrie-Protokoll nachverfolgt wurden.

Datum/Uhrzeit Ereignis-ID Severity Position File ID App
8.10.2022 17:57:10 PM 7 Nicht zutreffend Das Add-In-Manifest wurde erfolgreich heruntergeladen. Who's Who 69cc567c-6737-4c49-88dd-123334943a22 Outlook
8.10.2022 17:57:01 PM 7 Nicht zutreffend Das Add-In-Manifest wurde erfolgreich heruntergeladen. LinkedIn 333bf46d-7dad-4f2b-8cf4-c19ddc78b723 Outlook

In der folgenden Tabelle sind die Ereignisse aufgeführt, die im Telemetrieprotokoll für Office-Add-Ins normalerweise nachverfolgt werden.

Ereignis-ID Titel Severity Beschreibung
7 Das Add-In-Manifest wurde erfolgreich heruntergeladen. Nicht zutreffend Das Manifest des Office-Add-Ins wurde erfolgreich von der Office-Anwendung geladen und gelesen.
8 Das Add-In-Manifest konnte nicht heruntergeladen werden. Kritisch Die Office-Anwendung konnte die Manifestdatei für das Office-Add-In nicht aus dem SharePoint-Katalog, unternehmenskatalog oder AppSource laden.
9 Der Markup-Code des Add-Ins konnte nicht analysiert werden. Kritisch Die Office-Anwendung hat das Office-Add-In-Manifest geladen, konnte aber das HTML-Markup der App nicht lesen.
10 Die CPU-Nutzung des Add-Ins ist zu hoch. Kritisch Die Office-Add-In hat über eine begrenzte Zeitspanne mehr als 90 % der CPU-Ressourcen beansprucht.
15 Das Add-In wurde aufgrund eines Timeouts bei der Zeichenfolgensuche deaktiviert. Nicht zutreffend Outlook-Add-Ins durchsuchen die Betreffzeile und die Nachricht einer E-Mail, um zu ermitteln, ob sie mithilfe eines regulären Ausdrucks angezeigt werden soll. Das Outlook-Add-In, die in der Spalte File angegeben ist, wurde von Outlook deaktiviert, weil es bei dem Versuch, einen regulären Ausdruck zuzuordnen, mehrfach zu einer Zeitüberschreitung gekommen ist.
18 Das Add-In wurde erfolgreich geschlossen. Nicht zutreffend Die Office-Anwendung konnte das Office-Add-In erfolgreich schließen.
19 Für das Add-In ist ein Laufzeitfehler aufgetreten, der lokal protokolliert wurde. Kritisch Das Office-Add-In hatte ein Problem, das dazu geführt hat, dass es fehlschlägt. Weitere Informationen finden Sie im Microsoft Office-Warnungsprotokoll mithilfe der Windows-Ereignisanzeige auf dem Computer, auf dem der Fehler aufgetreten ist.
20 Das Add-In konnte die Lizenzierung nicht überprüfen. Kritisch Die Lizenzierungsinformationen für das Office-Add-In konnten nicht überprüft werden und sind möglicherweise abgelaufen. Weitere Informationen finden Sie im Microsoft Office-Warnungsprotokoll mithilfe der Windows-Ereignisanzeige auf dem Computer, auf dem der Fehler aufgetreten ist.

Weitere Informationen finden Sie unter Deploying Telemetry Dashboard und Problembehandlung für Office-Dateien und benutzerdefinierte Lösungen mit dem Telemetrieprotokoll.

Design- und Implementierungsverfahren

Während die Ressourcengrenzwerte für CPU- und Arbeitsspeicherauslastung, Absturztoleranz und Reaktionsfähigkeit der Benutzeroberfläche nur für Office-Add-Ins gelten, die nur auf Office-Desktopclients ausgeführt werden, sollte die Optimierung der Nutzung dieser Ressourcen und des Akkus eine Priorität haben, wenn Sie möchten, dass Ihr Add-In auf allen unterstützenden Clients und Geräten zufriedenstellend ausgeführt wird. Die Optimierung ist besonders wichtig, wenn Ihr Add-In zeitintensive Vorgänge ausführt oder große Datasets verarbeitet. In der folgenden Liste werden einige Techniken vorgeschlagen, um CPU-intensive oder datenintensive Vorgänge in kleinere Blöcke aufzuteilen, damit Ihr Add-In einen übermäßigen Ressourcenverbrauch vermeiden und die Office-Anwendung reaktionsfähig bleibt.

  • In einem Szenario, in dem Ihr Add-In eine große Datenmenge aus einem unbegrenzten Dataset lesen muss, können Sie eine Auslagerung anwenden, wenn die Daten aus einer Tabelle gelesen werden, oder die Größe der Daten in jedem kürzeren Lesevorgang reduzieren, anstatt zu versuchen, den Lesevorgang in einem einzigen Prozess durchzuführen. Dazu können Sie die setTimeout-Methode des globalen Objekts verwenden, um die Dauer der Eingabe und Ausgabe zu begrenzen. It also handles the data in defined chunks instead of randomly unbounded data. Eine weitere Möglichkeit besteht darin, asynchron zu verwenden, um Ihre Zusage zu verarbeiten.

  • Wenn Ihr Add-In einen prozessorlastigen Algorithmus für die Verarbeitung eines großen Datenvolumens verwendet, können Sie Web-Worker verwenden, um die Aufgabe mit der langen Bearbeitungszeit im Hintergrund auszuführen, während ein separates Skript (z. B. zur Anzeige des Fortschritts auf der Benutzeroberfläche) im Vordergrund ausgeführt wird. Web-Worker blockieren keine Benutzerinteraktionen und sorgen dafür, dass die HTML-Seite reaktionsfähig bleibt. Ein Beispiel für Web-Worker finden Sie unter Die Grundlagen von Web Workern. Weitere Informationen zur Web Worker-API finden Sie unter Web Worker .

  • Wenn Ihr Add-In einen prozessorlastigen Algorithmus verwendet, die Datenein- oder ausgabe jedoch in kleinere Teile aufgeteilt werden kann, können Sie einen Webdienst erstellen, die Daten an diesen übergeben, um den Prozessor zu entlasten, und auf einen asynchronen Rückruf warten.

  • Testen Sie Ihre App immer bei dem höchsten zu erwartenden Datenaufkommen, und schränken Sie Ihr Add-In so ein, dass Verarbeitungen nur bis zu diesem Grenzwert möglich sind.

Leistungsverbesserungen mit den anwendungsspezifischen APIs

Die Leistungstipps unter Verwenden des anwendungsspezifischen API-Modells bieten Anleitungen bei der Verwendung der anwendungsspezifischen APIs für Excel, OneNote, Visio und Word. Zusammenfassend sollten Sie Folgendes ausführen:

Nicht benötigte Proxyobjekte nicht nachverfolgen

Proxyobjekte bleiben im Arbeitsspeicher erhalten, bis RequestContext.sync() aufgerufen wird. Große Batchvorgänge generieren möglicherweise viele Proxyobjekte, die nur einmal von dem Add-In benötigt werden und aus dem Arbeitsspeicher freigegeben werden können, bevor der Batchvorgang ausgeführt wird.

Die untrack() -Methode gibt das Objekt aus dem Arbeitsspeicher frei. Diese Methode wird für viele anwendungsspezifische API-Proxyobjekte implementiert. Das Aufrufen untrack() , nachdem das Add-In mit dem -Objekt abgeschlossen wurde, sollte einen spürbaren Leistungsvorteil ergeben, wenn eine große Anzahl von Proxyobjekten verwendet wird.

Hinweis

Range.untrack() ist eine Verknüpfung für ClientRequestContext.trackedObjects.remove(thisRange). Die Nachverfolgung eines Proxyobjekts kann aufgehoben werden, indem es aus der Liste der nachverfolgten Objekte im Kontext entfernt wird.

Im folgenden Excel-Codebeispiel wird ein ausgewählter Bereich mit Daten gefüllt, jeweils eine Zelle nach der anderen. Nachdem der Wert der Zelle hinzugefügt wurde, wird die Nachverfolgung für den Bereich aufgehoben, der diese Zelle darstellt. Führen Sie diesen Code mit einem ausgewählten Bereich von 10.000 bis 20.000 Zellen zuerst mit der Zeile cell.untrack() und dann ohne diese Zeile aus. Sie sollten feststellen, dass der Code mit der Zeile cell.untrack() schneller als ohne die Zeile ausgeführt wird. Möglicherweise stellen Sie auch eine schnellere Reaktionszeit danach fest, da die Bereinigung weniger Zeit in Anspruch nimmt.

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

Beachten Sie, dass das Aufheben der Nachverfolgung von Objekten nur dann wichtig wird, wenn Sie es mit Tausenden von objekten zu tun haben. Die meisten Add-Ins müssen die Nachverfolgung von Proxyobjekten nicht verwalten.

Siehe auch