Home › Forum › Allgemeines › Allgemeines zu Nuclos › Nuclet einspielen dauert unterschiedlich lange
- Dieses Thema hat 7 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 8 Jahren, 11 Monaten von
Ramin Goettlich.
-
AutorBeiträge
-
18 November 2014 um 00:54 Uhr #7998
Matthias KÖPER
TeilnehmerHallo,
ich habe auf unserem Entwicklungssystem ein Nuclet erstellt und übertrage es auf zwei Nuclos-System. Beide hängen im selben Firmennetz auf zwei virtuellen Maschinen auf dem gleichen Server. Trotzdem dauert das Einspielen des gleichen Nuclets unterschiedlich lange. Auf dem einen System ist das Ganze in wenigen Minuten erledigt. Auf dem zweiten System dauert es ewig lange bis er das Nuclet analysiert hat und läuft teilweise auf einen Timeout (nach etwa einer halben Stunde). Der einzige Unterschied liegt darin, dass das zweite System mehr Daten enthält, das sollte aber meiner Meinung nach kein Problem sein.
Wie komme ich dem Problem auf die Spur?
Danke,
Skoeper18 November 2014 um 13:06 Uhr #8001Frank Pavlic
TeilnehmerHallo,
doch ,es macht einen Unterschied, wieviele Daten das System bereits enthalten hat. Beispiel:
Du machst ein Attribut in einer Entität nach ca. 6 Monaten Laufzeit zum Pflichtfeld, für die Datenbank heisst es dann „NOT NULL“. Wenn diese Tabelle nun Daten enthält, müssen diese ja evaluiert werden, heisst, es muss überprüft werden, ob nicht ein Datensatz doch einen NULL-Wert in dem entsprechenden Attribut enthält.
Und so ähnlich verhält es sich mit anderen Operationen.
Wobei ich schon sagen muss, dass eine halbe Stunde Importzeit schon etwas ungewöhnlich ist.
Ich weiss jetzt nicht, ob dein nuclet das gesamte System beinhaltet oder nicht. Falls ja, dann könntest Du
ielleicht nur deine Änderungen in ein eigenes nuclet auslagern und nur dieses nuclet dann importieren?
Ansonsten würde ich mal die Datenbank ins Visier nehmen und schauen, was die so während des Imports treibt.
Dann kannst Du auch mit jvisualvm dein Tomcat unter die Lupe nehmen und schauen, wo er die meiste CPU-Zeit verbläst.Gruß
Frank18 November 2014 um 21:01 Uhr #8002Matthias KÖPER
TeilnehmerHallo Frank,
Datenbankänderungen, die die Daten betreffen habe ich so weit ich weiß nicht dabei. Das System hängt im ersten Teil des Imports fest, also dort, wo analysiert wird, welche Änderungen notwendig sind. Gestern habe ich mein aktuelles Nuclet gar nicht eingespielt bekommen. Nach zwei Timeouts habe ich aufgegeben. Datenbank- und Tomcatanalyse habe ich noch nicht gemacht. Gibt es dazu im Wiki Hinweise?
Viele Grüße
skoeper19 November 2014 um 03:58 Uhr #8004Frank Pavlic
TeilnehmerHallo,
im Wiki habe ich nicht gesucht, daher weiss ich es nicht. Ich habe jvisualvm bereits vor nuclos benutzt, um Schwächen in Java-Programmen aufzudecken. In deinem Fall könntest Du nachschauen, in welcher Funktion der nuclet-Import hängt bzw. die Zeit bis zum Timeout verbringt. CPU-Sampling müsste dir relativ schnell zeigen, wo die meiste Zeit verbracht wird.Gruß
Frank14 Dezember 2014 um 01:20 Uhr #8040Matthias KÖPER
TeilnehmerNach einigem Suchen hat sich folgender Grund gefunden:
Postgres war sehr beschäftigt und war der Flaschenhals. Nachdem wir einige Postgresparameter geändert hatten und die Datenbank mehr Luft hatte, ging es plötzlich wieder gut.14 Dezember 2014 um 13:11 Uhr #8041Frank Pavlic
TeilnehmerHallo,
es wäre super, wenn Du vielleicht die Postgres-Parameter posten könntest, die zu einer signifikanten Verbesserung führten. Davon könnten weitere Admins/User ebenfalls profitieren.Gruß
Frank5 Januar 2015 um 15:44 Uhr #8078Matthias KÖPER
TeilnehmerHallo zurück mit Verzögerung,
folgende Parameter haben wir in unsere postgresql.conf aufgenommen bzw. angepasst:
shared_buffers = 768MB # ggf. Kernel konfigurieren s. postgres-Doku
temp_buffers = 64MB
work_mem = 4MB
maintenance_work_mem = 256MB
effective_cache_size = 1024MB
Die Postgres-Doku bezüglich Kernel-Konfiguration z.B. hier (Version beachten):
http://www.postgresql.org/docs/9.1/static/kernel-resources.htmlOhne Anspruch auf perfektes Postgres-Tuning! Vor allem muss man darauf achten, dass sich der Speicherverbrauch bei manchen Parametern multipliziert (mit der Anzahl der User bzw. gleichzeitig ausgeführter Statements u.ä.).
Mit diesen Änderungen ließ sich jedenfalls das Nuclet wieder problemlos importieren.
Mfg
mkoeper5 Januar 2015 um 15:48 Uhr #8079Ramin Goettlich
TeilnehmerIn der aktuellsten 4.3 Beta (noch nicht zum Download verfügbar) haben wir einige Optimierungen am Nucletimport vorgenommen, die die Performance desselben auf langsamen Datenbanken ca. verzehnfachen.
-
AutorBeiträge