22. März 2011 10:54
Hallo zusammen,
wir haben bei uns im Haus Navision und seit kurzem massive Performance Probleme. Hier einige Eckdaten:
Server (wird ausschließlich für ERP verwendet):
- Dell 2900
- 4GB Ram
- Quadcore Xeon CPU
- 3x Raid1 SAS (1x für OS, 2x für Datenbank)
- Win 2003 R2 Standard
- CPU-Auslastung: zwischen 0-15%
- Gigabit Backbone, 100Mbit Clients
Navision:
- Nativ Datenbank
- 20GB (2x 10GB, aufgeteilt auf 2x Raid1)
- 14 Benutzer
- Datenbankbelegung: 54%
Aus dem Taskmanager:
- Server.exe (866MB)
- SLAVE.exe (862MB)
- SLAVE.exe (862MB)
- SLAVE.exe (860MB)
(3x einen SLAVE.exe Prozess)
Seit einiger Zeit haben wir das Problem, dass z.B. das Erstellen von Rechnungen sehr lange dauert. Das Holen der Lieferscheinzeilen geht sehr schleppend vorann und dauert unerträglich lange (bis zu 30min).
Ist unser Server für unsere Datenbankgröße mittlerweile zu klein geworden? Ist der Server falsch konfiguriert (wo kann man denn die Konfiguration der Server.exe und der Slaves.exe einsehen - gerade in Bezug auf Anzahl der Slaves und verwendbaren Speicher). Gibt es eine Anleitung zum "Servertuning"? Muss die Datenbank u.U. reorganisiert (das gab es bei unserer alten WaWi) werden?
Vielen Dank für eure Unterstützung,
Johannes
22. März 2011 12:02
Was für eine Build-Version von Client/Server benutzt ihr?
22. März 2011 17:35
Hallo JanGD,
Client: 5.00
Server: Wo kann ich diese ablesen? In der Ereignisanzeige habe ich keinen entsprechenden Eintrag gefunden...
Beste Grüße,
Johannes
23. März 2011 10:15
Hallo,
im CC unter Hilfe -> Über... auf die Version doppelt klicken. Dann kommt ein neues Fenster mit der Build-Nr.
Gruß
Jan
31. März 2011 14:39
Hallo,
Performace-Prolbem ist immer ein Quell der Freude, ich kenne das aus eigener Erfahrung und es hat, völlig klar, eine große Anzahl Parameter, die das "ausmachen". Hier einige Tips vor mir:
Zuerst der Client:
Je nach Ressoucenausstattung des Clientcomputers kannst Du dort beim Starten von Navision zus. Parameter mit übergeben, die dann Speicher für diese Anwendung "reservieren". Das geht von 32000 über 64000 bis zu 128000 und steht im Aufruf von Navision, z.B. C:\Client\fin.exe servername="Name des Dienstes der Datenbank",...,cache=32000,.... Hier mußt Du natürlich überlegen, wieviel RAM der Clientrechner überhaupt hat. Zusätzlich kann noch der Commitcache auf true gesetzt werden. Dann werden alle Transaktionen erstmal im Hauptspeicher des Clients gepuffert, bevor sie in die Datenbank reingeschrieben werden (z.B. C:\Client\fin.exe servername="Name des Dienstes der Datenbank",...,cache=32000,commitcache=ja). Hinweis: stürzt der Rechner spontan ab, kann es sein, dass nicht alle Daten an den Server übergeben wurden!
Zum Server:
das cSide-Navision kann als DBMS Cache max. 1 GB ram verwalten. Was aktuell bei euch eingestellt ist, siehst Du beim Client im MenüDatei/Datenbank/Informationen/DBMS Cache (KB). Über die Registrierung kann auch im nachhinein eine Modifikation vorgenommen werden. dort gibt es auch die Information über die Auslastung der Datenbank. Sollte der Wert hier bei ca. 85% liegen oder höher, sollte die Datenbank vergößert werden (die User bekommen dann auch eine entspr. Meldung). Bei den Datenbankinformationen gibt es auch den Aufruf zu den Tabellen. Es kommt hier stark auf die Anzahl der Datensätze pro Tabelle an, aber wenn der Optimierungsggrad bei rd. 60% liegt, lohnt sich das "Optimieren" über den Button (aber bitte nur, wenn Du dort alleine arbeitest).
Zum Schluss noch ein Tip:
Es gibt die Tabelle "Performance" ID=2000000037. Mache dir doch eine Form auf Basis dieser Tabelle (Listentyp) und scheibe in den OnTimer-Trigger der form ein "Currform.update;" rein, und starte die Form. Bei uns (alles virtualisiert) werden dort Werte mit rd. 6000 Pakete (100 byte/Sek.) und ungefähr die Hälfte für Datenpakete bei einer Größe von 4000 Byte angezeigt.
Wenn das alles schon "optimal" ist, solltest Du mal versuchen, die Datenbankplatten gegen schnellere zu ersetzen ooder einen Festplattenverbund mit RAID10 zu nehmen oder die Datenbank auf verschieden Platten zu verteilen.
Hoffe, konnte helfen.
Gruß aus dem Ruhrgebiet.
31. März 2011 14:57
Hallo,
Papa hat geschrieben:Zuerst der Client:
Je nach Ressoucenausstattung des Clientcomputers kannst Du dort beim Starten von Navision zus. Parameter mit übergeben, die dann Speicher für diese Anwendung "reservieren". Das geht von 32000 über 64000 bis zu 128000 und steht im Aufruf von Navision, z.B. C:\Client\fin.exe servername="Name des Dienstes der Datenbank",...,cache=32000,.... Hier mußt Du natürlich überlegen, wieviel RAM der Clientrechner überhaupt hat. Zusätzlich kann noch der Commitcache auf true gesetzt werden. Dann werden alle Transaktionen erstmal im Hauptspeicher des Clients gepuffert, bevor sie in die Datenbank reingeschrieben werden (z.B. C:\Client\fin.exe servername="Name des Dienstes der Datenbank",...,cache=32000,commitcache=ja). Hinweis: stürzt der Rechner spontan ab, kann es sein, dass nicht alle Daten an den Server übergeben wurden!
Leider hat diese Einstellung keinerlei Auswirkung, wenn man mit einem Server arbeitet
Gruß, Fiddi
31. März 2011 16:25
Hallo Fiddi,
kann nicht ganz folgen - "wenn man mit einem Server arbeitet", welche Einstellung meinst Du?
Gruß aus dem Ruhrgebiet!
Papa
31. März 2011 16:31
Wenn man mit einem NAV- Native Server arbeitet, haben die "Cache" und "Commitcache"- Parameter keine Wrikung. Das wird dann nur beim Serverdienst eingestellt. Arbeitest du mit einer lokalen DB wirken diese Parameter sehr wohl.
Gruß, Fiddi
5. April 2011 11:29
Hallo zusammen,
leider hat die Mailbenachrichtigung nicht funktioniert - daher hab ich das Thema etwas aus den Augen verloren. Leider ist die Problematik stellenweise immer noch vorhanden.
JanGD, ich kann in dem Fenster "Info Microsoft Dynamics NAV" als Version lediglich die 5.00 ablesen. Eine weitere Build-Nr. ist hier nicht angegeben.
Kann mir noch jemand erklären wie die SLAVE.exe-Prozesse entstehen? Der Nav-Server ist vermutlich auch nicht Multi-threading fähig? Bei uns lastet er auf jeden Fall nur einen CPU Kern aus. Die Datenbank ist (wie bereits beschrieben) auf 2 * Raid-1 SAS-Platten (also insgesamt 4 Platten) verteilt - also eigentlich schon ein ganz potentes System...
Eine Installation auf einem 32bit Host mit mehr als 4GB Ram (z.B. Windows 2003 Server Enterprise) bringt in dem fall auch nichts, da ich der Datenbank nicht mehr Speicher zuweisen kann?
Die Tipps mit der Performance-Tabelle werde ich mir mal anschauen.
Vielen Dank soweit für eure Tipps,
beste Grüße,
Johannes
5. April 2011 11:39
basstscho hat geschrieben:JanGD, ich kann in dem Fenster "Info Microsoft Dynamics NAV" als Version lediglich die 5.00 ablesen. Eine weitere Build-Nr. ist hier nicht angegeben.
klicke bitte doppelt auf die Versionsnummer, dann erscheint die Buildnr. als Message.
Für jeden Datenbankteil gibt es einen Slave- Prozess.
Gruß, Fiddi
5. April 2011 12:23
fiddi hat geschrieben:Für jeden Datenbankteil gibt es einen Slave- Prozess.
Kann man einen der slave prozesse dann nicht auf einen anderen Kern auslagern?
Gruß
Jan
5. April 2011 13:25
JanGD hat geschrieben:Kann man einen der slave prozesse dann nicht auf einen anderen Kern auslagern?
Kann man schon, aber ob es was bringt? Keine Ahnung?
(Zum Ausprobieren im Taskmanager mit der rechten Maus- Taste unter Prozesse auf den Prozess gehen und "Zugehörigkeit festlegen" auswählen)
@basstscho:
Habt ihr in letzter Zeit eine Programmänderung bekommen, oder ist die Anzahl der Daten sehr stark gestiegen (zusätzliche Dimensionen, neue Stammdaten,...)?
Gruß, Fiddi
5. April 2011 13:26
fiddi hat geschrieben:basstscho hat geschrieben:JanGD, ich kann in dem Fenster "Info Microsoft Dynamics NAV" als Version lediglich die 5.00 ablesen. Eine weitere Build-Nr. ist hier nicht angegeben.
klicke bitte doppelt auf die Versionsnummer, dann erscheint die Buildnr. als Message.
Für jeden Datenbankteil gibt es einen Slave- Prozess.
Gruß, Fiddi
Ok - vielen Dank! Die Build ist 24199
Bisher ist mir leider nie wirklich etwas ausgewöhnliches aufgefallen. Jetzt habe ich es durch Zufall live miterlebt. Bei einem Blick auf die belegte Datenbankgröße stand diese auf einmal bei 82%. Wenige Sekunden später auf 97%. Dann fiel sie wieder auf 54%. Bei meiner Suche nach der Ursache habe ich mit sämtlichen NAS-Diensten angefangen. Alle abgeschaltet und einen nach dem anderen wieder gestartet. Direkt nach dem Start eines NAS-Dienstes (und der dazugehörigen Anwendung) stieg die Datenbankbelegung wieder rapide an und das gesamte System wurde langsam. Die Problematik lag tatsächlich an einer korrupten Import-Datei, die dieses Problem verursacht hatte. Nun habe ich die Datei aus dem Importverzeichnis genommen und bisher läuft das System wieder einwandfrei. Leider gab es keinen Eintrag im Log - die CPU-Auslastung war zu diesem Moment auch nur bei etwa 6-8% - also nichts ausergewöhnliches.
Dennoch würden mich diese Slave-Prozesse interessieren: Die Datenbank besteht aktuell aus zwei 10GB großen Dateien (laut Jan müsste es also nur 2 SLAVE-Prozesse geben). Die CPU-Last entsteht immer nur an der SERVER.exe - die Slaves belegen nur Arbeitsspeicher. Wenn unsere Lohnbuchhaltung allerdings Abrechnungen erstellt, lastet die SERVER.exe einen CPU-Kern zu 100% aus. Um das ganze zu Beschleunigen, wäre es natürlich toll, wenn diese mehrere Prozessorkerne nutzen würde (ist ein Quadcore).
Beste Grüße,
Johannes
5. April 2011 14:45
Die korrupte Importdatei hat eine Endlos-Schleife aufgelöst, die mit "nicht genug Speicher" abbricht und dann das Rollback die DB Belegung wieder runterfährt.
Schön, dass du das problem gefunden hast.
Fiddi hat schon beschrieben, wie man die Prozesse den Kernen zuordnet. Da würde ich pro slave.exe und server.exe jeweils einen Kern eintragen.
Gruß,
Jan
5. April 2011 15:00
Hallo Jan,
lediglich die SERVER.exe sorgt für CPU-Last. Aller anderen Prozesse sind quasi bei 0. Daher würde nur eine "Aufteilung" der SERVER.exe auf mehrere Prozessoren (mutithreading) etwas bringen. Aber dies wird von Nav vermutlich nicht unterstützt - oder doch?
Beste Grüße,
Johannes
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.