Tools zur Performance-Analyse
Übersicht
| Tool | Anwendungsfall | Ergebnis |
|---|---|---|
| Leistungsprofilerstellung (im Client) | Einen gezielten Snapshot eines langsamen Prozesses aufzeichnen und die Zeitverteilung untersuchen. | Zeitlich sortierte Rangfolge mit Erkenntnissen zu Apps, Objekten und Aufrufbäumen. |
| Profilplanungen | Profilaufzeichnungen für ein Benutzer-/Sitzungsszenario planen und später analysieren. | Reproduzierbare Traces für sporadische oder zeitlich wiederkehrende Probleme auch außerhalb der Servicezeiten. |
| Seite „Datenbanksperren“ | Blockierende Sitzungen und Sperrkonflikte bei Wartezeiten oder Zeitüberschreitungen untersuchen. | Blockierende Sitzung sowie betroffenes Objekt bzw. betroffene Tabelle identifizieren. |
| Seite “Fehlende Indizes für Datenbank” | Empfehlungen für Datenbankindizes für aufwendige Abfragen ermitteln. | Indexkandidaten zur Reduzierung von Leseaufwand und Laufzeit. |
| Datenbankindexnutzung verwalten | Indexnutzung prüfen und Indizes pro Mandant oder für alle Mandanten aktivieren bzw. deaktivieren. | Kontrollierte Optimierung mit messbaren Abwägungen zwischen Lesen, Schreiben und Speicherplatz. |
| Debugger (Aufrufliste) + MCP-Workflow | Problem reproduzieren, Ausführungspfad prüfen und die Aufrufliste mit Diagnosen abgleichen. | Eingrenzung der Ursache und konkreter Lösungsvorschlag mit technischen Belegen. |
| Telemetrie (Application Insights / Azure Monitor) | Performance-Trends in der Produktion über Benutzer, Mandanten und Zeiträume analysieren. | Datenbasierte Erkennung wiederkehrender Engpässe und Regressionen. |
| Seite “Datenbank-Wartestatistik” | Zwischen CPU-, E/A-, Sperr- und Abfrageplanproblemen unterscheiden. | Präzise Eingrenzung für SQL-seitige Maßnahmen. |
| Seitenüberprüfung | Langsame Seitenöffnungen durch FactBoxes, FlowFields oder Erweiterungssteuerelemente untersuchen. | Diagnose des Einflusses von Seitendarstellung und Ladezeiten. |
| Protokolle für Aufgabenwarteschlange | Überschneidungen und Planungskonflikte bei Stapelverarbeitungen erkennen. | Bessere Planung und weniger Konflikte durch parallele Jobs. |
| Snapshot Debugger | Nur in der Produktivumgebung auftretende Probleme mit minimaler Unterbrechung untersuchen. | Produktionssichere Nachverfolgbarkeit problematischer Ausführungspfade. |
Zusammenfassungen der Tools
1) Leistungsprofilerstellung (im Client) für die Performanceanalyse
Was ist das? Eine integrierte Seite in Business Central, die einen Snapshot eines langsamen Prozesses aufzeichnet und zeigt, wo Zeit in Apps, Objekten und Methoden verbraucht wurde.
Microsoft Learn: https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/administration/performance-profiler-overview
Wann verwenden?
- Ein Prozess ist langsam, aber die Ursache ist unklar.
- Es soll ermittelt werden, ob die meiste Zeit in der eigenen App, in Microsoft-Apps oder in Erweiterungen von Drittanbietern anfällt.
- Für eine Code- oder Konfigurationsänderung werden wiederholbare Vorher-/Nachher-Vergleiche benötigt.
Typischer Nutzen Eine priorisierte Hotspot-Liste auf den Ebenen App, Anwendungsobjekt und Aufrufbaum.
Empfohlener Ablauf
- Leistungsprofilerstellung über Programmsuche öffnen und in einem separaten Fenster geöffnet lassen.
- Zum zu untersuchenden Geschäftsprozess navigieren.
- Die Aufzeichnung unmittelbar vor der langsamen Aktion starten und direkt danach beenden.
- Aktive Apps prüfen, um App bzw. Herausgeber mit dem größten Zeitanteil zu ermitteln.
- Technische Informationen anzeigen aktivieren und Zeitaufwand nach Anwendungsobjekt sowie den Aufrufstruktur mit Selbstzeit und Gesamtzeit untersuchen.
- Den
.alcpuprofile-Snapshot für die Zusammenarbeit freigeben oder zur weiteren Analyse herunterladen.
Hinweise zur Interpretation
- Selbstzeit bezeichnet den Aufwand innerhalb der Methode selbst.
- Gesamtzeit umfasst auch aufgerufene Methoden.
- Eine hohe Gesamtzeit bei niedriger Selbstzeit weist häufig auf einen tiefer liegenden Engpass hin.
2) Profilplanungen
Entscheidungsregel
- Leistungsprofilerstellung (im Client) verwenden, wenn das Problem reproduzierbar ist und gezielt um eine langsame Aktion herum aufgezeichnet werden kann.
- Profilplanungen verwenden, wenn das Problem sporadisch, außerhalb der Arbeitszeiten, mit Hintergrundaufgaben oder mit Webserviceaufrufen zusammenhängt.
- Wenn möglich beide verwenden: zunächst zur Hotspot-Erkennung, danach zur Validierung unter realistischen Auslastungszeiträumen.
Was ist das? Ein Zeitplan auf der Seite Profilplanungen, der passende Aktivitäten für einen ausgewählten Benutzer und Zeitraum aufzeichnet und einzelne Profile für die spätere Analyse erstellt.
Microsoft Learn: https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/administration/scheduled-performance-profiler-overview
Wann verwenden?
- Sporadische oder außerhalb der Arbeitszeiten auftretende Probleme müssen erfasst werden.
- Hintergrundaufgaben, Aufgabenwarteschlangen oder Webserviceaufrufe müssen profiliert werden.
- Traces für einen Benutzerablauf über einen längeren Zeitraum werden benötigt.
Typischer Nutzen Eine reproduzierbare Gruppe von Aktivitätsprofilen, die nach Kennzahlen vorsortiert und anschließend per Leistungsprofilerstellung detailliert analysiert werden kann.
Empfohlener Ablauf
- Profilplanungen öffnen und einen neuen Zeitplan erstellen.
- Benutzer, Aktivitätenart sowie Start- und Endzeit konfigurieren.
- Erweiterte Optionen festlegen: Stichprobenrate steuert Genauigkeit; Schwellenwert für Aktivitätsdauer filtert kurze Interaktionen.
- Nach der Aufzeichnung Leistungsprofile auswählen.
- Nach Dauer, SQL-Aufrufen, HTTP-Aufrufen und Korrelations-ID vorsortieren.
- Ein Profil in Leistungsprofilerstellung mit dem Ablauf aus Abschnitt 1 analysieren.
Hinweise
- Aktivitätstypen umfassen Browseraktivitäten, Hintergrundaufgaben bzw. Aufgabenwarteschlangen und Webserviceaufrufe.
- Die Profilplanung verursacht durch die Aufzeichnung einen geringfügigen Perfomanceaufwand.
- Während der Profilplanung kann kein Debugger, einschließlich Snapshot Debugging, angefügt werden.
- Leisungsprofile können wegen asynchroner Verarbeitung verzögert erscheinen; die Seite eventuell aktualisieren.
3) Seite „Datenbanksperren“
Was ist das? Eine Clientseite mit einem Snapshot aller aktuellen Datenbanksperren zur schnellen Identifizierung blockierender Situationen.
Microsoft Learn: https://learn.microsoft.com/en-us/dynamics365/business-central/admin-view-database-locks
Wann verwenden?
- Benutzer melden „hängende“ Aktionen oder sporadische Zeitüberschreitungen.
- Buchungen oder Stapelverarbeitungen warten unerwartet.
- Sperrkonflikte zwischen parallelen Prozessen werden vermutet.
Typischer Nutzen Schnelle Identifizierung aktiver Sperrkonflikte, um den blockierten Prozess einzugrenzen.
- Microsoft Learn: https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/administration/monitor-database-locks
4) Fehlende Indizes für Datenbank
Was ist das? Eine Empfehlungsseite (Fehlende Indizes für Datenbank), die auf Grundlage der SQL-Auslastung mögliche Indizes ermittelt.
Microsoft Learn: https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/administration/database-missing-indexes
Wann verwenden?
- Abfragen sind aufwendig und durchsuchen große Datenmengen.
- Der Aufrufbaum der Leistungsprofilerstellung weist auf SQL-lastige Engpässe hin.
- Zugriffsmuster auf Tabellen haben sich nach der Einführung eines Features geändert.
Typischer Nutzen Priorisierte Indexkandidaten mit geschätztem Nutzen für die Optimierung besonders wichtiger Tabellen.
Wichtiger Hinweis Empfehlungen als Eingabe und nicht als automatische Anweisung behandeln. Überschneidungen mit vorhandenen Schlüsseln, Schreibaufwand und Speicherbedarf vor der Umsetzung prüfen.
5) Datenbankindexnutzung verwalten
Was ist das? Eine Möglichkeit mit Tabelleninformationen und Datenverwaltung, um Indexnutzung zu prüfen und Indizes pro Mandant oder für alle Mandanten zu schalten.
Microsoft Learn: https://learn.microsoft.com/en-us/dynamics365/business-central/manage-indexes
Wann verwenden?
- Schreibaufwand und Speicherplatz durch wenig genutzte nicht eindeutige Indizes sollen reduziert werden.
- Nutzungsstatistiken für eine Tabelle bzw. einen Mandanten sollen ausgewertet werden.
- Eine mandantenspezifische Indexoptimierung wird benötigt.
Typischer Nutzen Kontrollierte Indexoptimierung auf Grundlage der beobachteten Nutzung.
Nutzung
- Nur geeignete nicht eindeutige Indizes können deaktiviert werden; Primärschlüssel, eindeutige Indizes, SIFT- und
$systemid-Indizes sind geschützt. - Das Deaktivieren eines Index wird sofort wirksam.
- Das Aktivieren eines Index wird für den nächsten planmäßigen Prozess um Mitternacht eingereiht (Cloud).
Wichtiger Hinweis Entscheidungen anhand gemessener Nutzungsdaten treffen. Das Deaktivieren nützlicher Indizes kann die Leseperformance beeinträchtigen.
6) Debugger mit Aufrufliste + MCP-Server zur Fehlerbehebung
Was ist das? Troubleshooting MCP Server für AL ist eine KI-gestützte Debugging-Funktion für aktive AL-Debugsitzungen. Copilot kann Aufruflisten, Variablen, Quellcode und Haltepunkte programmgesteuert untersuchen.
Microsoft Learn: https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-debug-mcp-server
Voraussetzungen
- Aktive AL-Debugsitzung in Visual Studio Code.
- Die Ausführung ist an einem Haltepunkt oder wegen eines Laufzeitfehlers angehalten.
- AL Language Extension ist installiert und GitHub Copilot Chat aktiviert.
Wann verwenden?
- Eine tiefgehende Analyse von AL-Laufzeitfehlern und komplexen Aufruflisten ist erforderlich.
- Variablenzustände sollen über mehrere Aufrufe hinweg verglichen werden.
- Copilot soll auf Grundlage von Aufrufliste, Variablen und Codekontext eine Lösung vorschlagen.
Typischer Nutzen Schnellere Ursachenermittlung durch die Kombination des Debugstatus mit der Copilot-Analyse.
Zentrale MCP-Tools
- Call stack abrufen: Zeigt Ablauf des Aufrufs bis zur aktuellen Position.
- Variablen abrufen: Untersucht lokale und globale Variablen für jeden Ausführungsschritt.
- Quellcode abrufen: Gibt den Quellcodekontext für den aktuellen Haltepunkt zurück.
- Haltepunkt hinzufügen: Setzt programmgesteuert einen Haltepunkt.
Muster für Prompt Zum Beispiel: „Verwende den Troubleshooting MCP Server, um zu analysieren, wie dieser Fehler entstanden ist. Zeige anschließend die Variablen für Haltepunkt 0 und 1 und schlage eine Lösung vor.“
Einschränkungen
- Nur während einer angehaltenen Debugsitzung verfügbar.
- Kein Zurückverfolgen vergangener Ausführungspunkte.
- Der Umfang ist auf den aktuellen Aufruflistenkontext beschränkt.
- Copilot-Ergebnisse vor einer Codeänderung anhand erwarteter Variablenwerte überprüfen.
Wann herkömmliches Debugging besser geeignet ist
- Interaktives schrittweises Durchlaufen des Codes.
- Schnelle visuelle Prüfung einfacher Probleme.
- Erste Einarbeitung in einen unbekannten Codeablauf.
7) Telemetrie (Application Insights)
Was ist das? Zentralisierte Laufzeittelemetrie für die langfristige Performanceanalyse über mehrere Sitzungen hinweg.
Microsoft Learn: https://learn.microsoft.com/dynamics365/business-central/dev-itpro/administration/telemetry-overview
Wann verwenden?
- Probleme treten sporadisch oder nur in der Produktion auf.
- Trends über mehrere Releases oder Vergleiche von Mandanten, Benutzern und Zeiträumen werden benötigt.
Typischer Nutzen Objektive Belege für wiederkehrende Muster und Regressionen.
8) Seite “Datenbank-Wartestatistik”
Was ist das? SQL-Diagnosen zur Analyse von Wartezeiten.
Microsoft Learn: https://learn.microsoft.com/en-/dynamics365/business-central/database-wait-statistics
Wann verwenden?
- Der Engpass wird durch SQL verursacht.
- Regressionen bei Abfrageplänen oder starke Wartezeiten werden vermutet.
Typischer Nutzen Klare Unterscheidung zwischen Problemen durch Sperren, E/A, CPU und Abfragepläne.
9) Seitenüberprüfung
Was ist das? Diagnosewerkzeug für UI und Seiten zur Untersuchung von Steuerelementen, Tabellendaten und Erweiterungen.
Microsoft Learn: https://learn.microsoft.com/dynamics365/business-central/across-inspect-page
Wann verwenden?
- Benutzer melden langsames Öffnen oder Navigieren auf Seiten.
- FactBoxes oder FlowFields werden als Ursache vermutet.
Typischer Nutzen Gezielte Optimierungsmöglichkeiten auf UI-Ebene.
10) Protokolle für Aufgabenwarteschlange
Was ist das? Protokolle für geplante bzw. im Hintergrund ausgeführte Prozesse und deren Überschneidungen.
Microsoft Learn: https://learn.microsoft.com/dynamics365/business-central/admin-job-queues-schedule-tasks
Wann verwenden?
- Verlangsamungen treten zu vorhersehbaren Zeiten auf.
- Buchungen und Aufträge der Aufgabenwarteschlange überschneiden sich.
Typischer Nutzen Bessere Planung und weniger Konfliktspitzen.
11) Snapshot Debugger
Was ist das? Ein produktionssicherer Debugging-Ansatz für in der Testumgebung nicht reproduzierbare Szenarien.
Microsoft Learn: https://learn.microsoft.com/dynamics365/business-central/dev-itpro/developer/devenv-snapshot-debugging
Wann verwenden?
- Das Problem tritt nur in der Produktion auf.
- Ein Aufruftrace ohne interaktives Anfügen wird benötigt.
Typischer Nutzen Sichere Produktionsdiagnose für schwer reproduzierbare Probleme.
Empfohlener Untersuchungsablauf
- Problem bestätigen und reproduzieren (Umfang, Auswirkungen auf Benutzer, Häufigkeit).
- Mit Sitzungsereignis / Aktive Sitzungen Umfang und betroffene Anforderungen ermitteln.
- Den geplante Leistungsprofilerstellung für eine stabile Baseline sowie sporadische Probleme verwenden.
- Das Szenario mit dem Leistungsprofilerstellung im Client erfassen und Hotspots identifizieren (Aktive Apps -> Objektzeit -> Aufrufbaum).
- Bei Anzeichen für Wartezeiten die Seite Datenbanksperren prüfen.
- Bei SQL-lastigen Problemen Fehlende Indizes, Tabellen-/Indexmerkmale und SQL-Wartezeiten bzw. Abfragepläne bewerten.
- Mit Debugger + Aufrufliste oder in der Produktion mit dem Snapshot Debugger die Ursache im Code überprüfen.
- Die Telemetrie verwenden, um Verbesserungen nach der Veröffentlichung zu validieren.
- Das Baselineszenario erneut ausführen, um eine messbare Verbesserung zu bestätigen.
Hinweise nach Zielgruppe
Für Kunden / Key User
- Mit den Symptomen beginnen: Welche Seite bzw. welcher Prozess, wann und wie häufig?
- Zeitbeispiele und betroffene Benutzer bereitstellen.
- Sperr- und Performance-Seiten hauptsächlich zur Beweiserhebung verwenden.
Für Entwickler
- Von der Messung zur Diagnose arbeiten, nicht von Annahmen ausgehen.
- AL-Aufrufliste mit SQL- und Sperrbeobachtungen abgleichen.
- Jede Optimierung mit Vorher-/Nachher-Messungen validieren.