[Gelöst] Performance für Migrationen temporär verbessern

3. April 2018 15:35

Hallo liebe Community,

ich habe eine recht allgemeine Frage.

Wir betreiben einen Server, auf dem zur Zeit SQL Server und NAV 2017 Server gemeinsam laufen. Auf dem Server werden lediglich Migrationen (zu NAV) durchgeführt. D. h. dass die zur Verfügung stehenden Ressourcen meist nur kurzfristig benötigt werden - eben für den Zeitraum, in dem die Migrationsskripte/-reports laufen. Wie das so ist, sammeln sich schnell ein paar SQL-Server- und NAV-Instanzen an, die ggf. nicht mehr aktuell benötigt werden. Für die Zeiträume der Migrationen wäre es natürlich prima, die maximale Leistung aus dem SQL-Server/NAV-Server herausholen zu können.

Deshalb die ganz allgemeine Frage: Gibt es einfache Methoden bzw. Tipps, wie ich die Performance für eine Migration kurzzeitig _merklich_ beeinflussen kann, damit langwierige Migrationsschritte ggf. etwas flotter von der Hand gehen? Theoretisches Beispiel: Bringt es etwas, die zur Zeit nicht aktiven NAV-/SQL-Instanzen zu deaktivieren - oder wäre das kaum merklich? Habt ihr weitere Tipps, wie man _mit einfachen Mitteln_ die Migrationen deutlich beschleunigen kann?

Hintergrundinfo dazu: Es sind neue Migrationsserver in Planung, bei denen NAV/SQL getrennt gefahren wird und auch mehr I/O und RAM zur Verfügung steht - es wird also bereits an einer dauerhaft besseren Lösung gearbeitet. In der Zwischenzeit müssen wir noch mit dem arbeiten, was vorhanden ist. Darum die Frage, ob sich mit einfach Mitteln hier deutliche Performanceunterschiede erzielen lassen. Manchmal sind die einfachsten Tricks die besten...

Vielen Dank vorab für Eure "Geheimtipps" :-)

Euer Ratze
Zuletzt geändert von RatzeFummel am 4. April 2018 10:10, insgesamt 1-mal geändert.

Re: Performance für Migrationen temporär verbessern

3. April 2018 16:15

Was auf jeden Fall viel bringt:
Alle nicht benötigten ServiceTier-Instanzen stoppen, denn die genehmigen sich im Laufe der Zeit einiges an Arbeitsspeicher.

Wir haben hier bei uns fünf NAV 2017-Datenbanken mit je einer DEV- und TEST-Instanz.
Das macht in Summe 10 Datenbanken mit 10 ServiceTiers.
Die LIVE-Instanzen sind auf einer separaten Maschine.
Die SQL-Datenbanken haben auch ihren eigenen Server, und die RTCs (Windows-Clients) werden ebenfalls über separate Server (per Citrix) abgefertigt.
Somit tummeln sich auf diesem Server nur die ServiceTiers für die DEV- und TEST-Instanzen.

Startet man jetzt in einer DEV-Instanz eine rechenintensive Verarbeitung, so sieht man, wie sich diese Instanz alles an Arbeitsspeicher und CPU-Zeit unter den Nagel reißt, so dass nix mehr für die anderen Instanzen übrig bleibt.
Wir haben es schon geschafft, dass RAM und CPU zu 100% in Anspruch genommen wurden, da dauert dann jeder einzelne Mausklick mehrere Minuten bis er vom Betriebssystem verarbeitet wurde.

Stoppt man vorher die 9 anderen Instanzen, so zieht sich die Instanz mit der rechenintensive Verarbeitung zwar weiterhin fast alles an RAM und CPU, jedoch nicht zu 100%.
Erstens reagiert das Betriebssystem dann noch auf Mausklicks, zweitens ist die Verarbeitung deutlich schneller durch, da der Server nicht swappen muss.

Glücklicherweise ist von den fünf Datenbanken zur Zeit nur eine (kleine mit ganz wenigen Usern) bereits im Produktiv-Betrieb, doch die anderen folgen noch in diesem Jahr.
Aus den Erfahrungen der letzten Monate haben wir gelernt und werden einen eigenständigen, extrem leistungsfähigen Server nur für die LIVE-ServiceTier-Instanzen in Betrieb nehmen, bevor die große Datenbank in den Echtbetrieb geht.

Re: Performance für Migrationen temporär verbessern

3. April 2018 16:26

Hallo,

wichtig ist es, das man den Arbeitsspeicher der einzelnen Prozesse (NAV-Servicetier/SQL) so bemisst, das nicht der komplette Speicher des Rechners aufgefressen wird. Dann gibt es in der Regel auch keine Probleme bei rechenintensiven Programmen.

So viel Speicher brauchen die meist gar nicht. Also den Maximalen Arbeitsspeicher des SQL-Servers begrenzen, und "Data Cache Size" des ServiceTiers so einstellen, das noch ca. 10-15 % des Arbeitsspeichers frei bleiben.

Wenn man den Servicetier nicht ausbremst hat er die ganze DB im Speicher, was bei Migrationen eher unnötig ist, weil die Daten meist nur einmal benötigt werden.

Gruß Fiddi

Re: Performance für Migrationen temporär verbessern

4. April 2018 10:10

Hallo Timo, hallo Fiddi,

super, damit kann ich erst einmal etwas anfangen. Ich deaktiviere dann mal alle Service-Tiers, die nicht aktiv genutzt werden, damit sollte sich ja schon einiges tun dann. Bezüglich Cache usw. lese ich mich dann noch einmal ein und probiere das dann mal aus.

Ich habe zum Thema auch noch einen Beitrag (Englisch) gefunden, der vielleicht auch für Andere in dem Zusammenhang interessant ist:

https://community.dynamics.com/nav/b/arounddynamicsnavworld/archive/2016/12/12/all-about-how-to-boost-dynamics-nav-server

Vielen Dank für die Tipps! (Gelöst)

VG, Ratze

Re: [Gelöst] Performance für Migrationen temporär verbessern

4. April 2018 10:21

Hallo,

kleiner Tipp noch, wenn du viele Servicetiers unterschiedlicher Versionen am laufen hast, hilft dir u.U. das Service Tier Administratrion Tool (Mibuso) den Überblick zu behalten.

Gruß Fiddi