Sage 100 schnell – auch oberhalb der Datenbank
Der SQL Server reagiert schnell, aber Sage 100 trotzdem nicht? Dann endet die Performanceanalyse nicht an der Datenbank.
Wir messen, wie der Sage-100-Applikationsserver Requests verarbeitet, ServiceDomains bereitstellt und Ressourcen unter echter Last verteilt.
Zwischen Sage-Client und SQL Server liegt mehr als ein Pfeil
Ein Sage-Aufruf durchläuft mehrere technische Ebenen. Erst wenn wir die Zeit entlang dieser Strecke trennen, wird aus „Sage ist langsam“ eine belastbare Diagnose.
Wait Statistics, I/O, CPU, RAM, Blocking, Ausführungspläne, Indizes und Statistiken zeigen, wo die Datenbank Zeit verliert.
ServiceDomain-Verfügbarkeit, Initialisierung, parallele Requests, Businesslogik, Dienste und Netzwerk können bereits vor dem SQL-Aufruf warten.
Eine passende Sage-Instanz für jede Anfrage
Eine ServiceDomain verbindet Service, initialisierte Sage-Anwendung und Anwendungskontext in einer isolierten Laufzeitumgebung. Deshalb passt nicht jede vorhandene Domain zu jedem Request.
Drei Poolgrößen – eine gemeinsame Kapazitätsentscheidung
ServiceDomain-Pooling ist kein Satz unabhängiger XML-Schalter. Initialbestand, Mindestreserve, Obergrenze und Lebensdauer greifen ineinander.
poolInitialSizeKapazität beim StartWie viele ServiceDomains werden vorgeladen, bevor morgens viele Benutzer gleichzeitig beginnen?
poolMinSizeReserve nachproduzierenSinkt der vorbereitete Bestand, kann der Server im Hintergrund neue Domains erzeugen.
poolMaxSizeUngenutzte Reserve begrenzenVerhindert, dass einmal aufgebaute Kapazität dauerhaft unbegrenzt RAM bindet.
lifeTimeLeaseTimeLebensdauer steuernZu kurze Werte erzeugen unnötigen Neuaufbau, zu lange Werte halten Ressourcen fest.
contextQuotaMaxKontexte fair begrenzenEin einzelner Client soll nicht alle verfügbaren Verarbeitungsslots belegen.
maxActiveServiceDomainsParallelität kontrollierenMehr gleichzeitige Prozesse helfen nur, solange CPU, RAM und Gegensysteme mithalten.
Häufige Initialisierung, knappe Reserve und Wartezeit bei typischen Spitzen.
Genügend vorbereitete Domains bei kontrolliertem Ressourcenverbrauch.
Unnötig gebundener RAM und Konkurrenz zu SQL Server und Betriebssystem.
30 Lizenzen bedeuten nicht 30 gleich aktive Prozesse
Arbeitsbeginn, Rückkehr aus Pausen, Massendruck, Reporting und Hintergrundjobs erzeugen eigene Lastprofile. Genau diese Spitzen entscheiden über die sinnvolle Reserve.
Ohne passende Begrenzung
Fair verteilte Parallelität
SQL schnell + Sage langsam = oberhalb der Datenbank messen
Wenn eine SQL-Abfrage 80 ms benötigt, der komplette Sage-Aufruf aber 2.400 ms, erklärt die Datenbank nur einen kleinen Teil der wahrgenommenen Laufzeit.
Performance Counter zeigen, was unter Last tatsächlich passiert
Einzelne Werte sind keine Diagnose. Erst ihr gemeinsamer Verlauf zeigt, ob der Server hohe Last gesund verarbeitet oder ob Requests bereits auf Kapazität warten.
ActiveServiceDomainsAktive VerarbeitungWie viele Domains gerade Requests ausführen.
ServiceDomainPoolSizeVorbereitete ReserveWie viele passende Domains im Pool bereitstehen.
FindChannelTimeDomain-SucheZeit bis eine geeignete freie Domain gefunden wird.
ProcessMessageTimeBusinesslogikVerarbeitungszeit der gehosteten Anwendung.
TotalProcessMessageTimeGesamtaufrufDurchschnittliche Dauer eines vollständigen Aufrufs.
RejectedServiceCallsAbgewiesene RequestsAufrufe, die wegen hoher Last nicht angenommen wurden.
ServiceCallsPerSecondDurchsatzVerarbeitete Serviceaufrufe pro Sekunde.
AsyncQueuedRequestsWarteschlangeAsynchrone Anforderungen, die noch warten.
Application-Server-Performance ist mehr als RAM
Applikationsserver und SQL Server können auf demselben System betrieben werden. Dann konkurrieren beide jedoch mit Windows und weiteren Diensten um dieselben Ressourcen.
Wie viele Prozesse können wirklich effizient gleichzeitig laufen?
Wie viel Reserve ist sinnvoll, ohne SQL Buffer Pool zu verdrängen?
Wie schnell erreichen Clients, Dienste und Datenbank einander?
Wo liegen Blob-, temporäre und dienstbezogene Daten?
Wie schnell beantwortet die Datenbank ausgelöste Abfragen?
Unter realer Last messen – sporadische Fehler gezielt tracen
Eine Messung am Sonntag erklärt keine Engpässe am Montagmorgen. Wir zeichnen den normalen Arbeitstag auf und vertiefen auffällige Zeitfenster bei Bedarf mit ETW und TraceLogManager.
Last, Poolgröße, Wartezeit, Durchsatz und abgewiesene Requests über den relevanten Zeitraum.
Technische Ereignisse bei sporadischen Fehlern, fehlgeschlagenen Requests, Updates oder Authentifizierungsproblemen.
BlobStorage, STS und Endpunkte gehören zur Prozesskette
Nach Update, Servermigration, Namens- oder Zertifikatswechsel reicht „der Hauptdienst startet“ nicht. Entscheidend ist, ob die gesamte beteiligte Dienstlandschaft funktioniert.
Identität & Zugriff
Secure Token Service (STS)Servicekonten und BerechtigungenAutorisierung und EndpunktkonfigurationTransport & Zertifikate
SSL und PortbindungThumbprint und ZertifikatsspeicherGültigkeit, DNS-Namen und ProtokolleEin zweiter Applikationsserver ist keine Universalmedizin
Mehrere Instanzen und Load Balancing können bei hoher paralleler Service-Last sinnvoll sein. Sie beschleunigen jedoch weder eine langsame SQL-Abfrage noch einen schlecht entwickelten Report.
Wann sich ein Application Server Check lohnt
Pooling, Preloading, ServiceDomain-Erzeugung und Lastverlauf zusammen prüfen.
Datenbanklaufzeit, Businesslogik, asynchrone Verarbeitung und BlobStorage trennen.
Dienstkonfiguration, STS, Zertifikate, Endpunkte und Konfigurationsdateien analysieren.
Anzahl und Lebensdauer der Domains in Relation zur wirklichen Last bewerten.
Parallelitätsgrenzen, Context Quotas, Pooling und Rejected-Counter korrelieren.
Vorher belegen, ob Verteilung das vorhandene Problem tatsächlich löst.
Dokumentation erklärt den Parameter – Ihre Last bestimmt den Wert
Eine Empfehlung wie poolInitialSize = 20 kennt weder Ihre Benutzer, CPU, RAM, Mandanten, Reports, Schnittstellen noch Lastspitzen.
Vom Ist-Zustand zur kontrollierten Optimierung
Version, Benutzer, Server, Terminalserver, Reporting, APIs, Zusatzlösungen und Schnittstellen.
CPU, RAM, Storage, Windows, Virtualisierung und konkurrierende Prozesse.
Initial-, Mindest- und Maximalgröße, Lebensdauer, Quotas und Parallelitätsgrenzen.
ServiceDomains, Pool, Zeiten, Durchsatz, Warteschlangen und Ablehnungen.
ETW, TraceLogManager, Ereignisprotokolle und Sage-Logs gezielt einsetzen.
BlobStorage, STS, Zertifikate, Servicekonten und Endpunkte einbeziehen.
Datenbanklaufzeit von Wartezeit in Anwendung und Infrastruktur trennen.
Änderung im Wartungsfenster umsetzen und dieselbe Lastsituation erneut messen.
Beispielhafte Darstellung der Auswertung – keine pauschale Konfigurationsempfehlung.
Sage-Prozess und technische Plattform zusammen denken
Wir betrachten nicht nur die Oberfläche, sondern die Geschäftslogik hinter Services und Requests.
Pooling, Wiederverwendung, Ressourcenbedarf und Parallelität werden technisch verstanden.
Die Analyse endet nicht am Applikationsserver, wenn Messwerte auf die Datenbank zeigen.
Eigene Abfragen, Dienste, Schnittstellen und Zusatzlösungen können getrennt untersucht werden.
Performance Monitor, ETW, TraceLogManager, Event Log, SQL-DMVs und Query Store.
Ist-Zustand, Hypothese, Wartungsfenster, Funktionstest und Vorher-Nachher-Wirkung bleiben nachvollziehbar.
Sage 100 Applikationsserver professionell prüfen
Wir zeigen, ob Zeit bei ServiceDomains, Businesslogik, Diensten, Infrastruktur oder SQL Server verloren geht – und welche Änderung nachweisbar hilft.
Application Server Check anfragen