Home › Forum › Nuclos Konfiguration › Sonstiges › Fehler in Suche › Aw: Fehler in Suche
Hallo,
ich habe das Szenario (auf einer Postgres-DB) nachgestellt (die Entität nachgebaut und Testdaten generiert) und habe folgendes Verhalten mit angegebener Hardwareaussstattung:
800.000 Datensätze: Suche ohne Einschränkung: ca. 5 Sek
1,6 Mio Datensätze: Suche ohne Einschränkung: Fehlerhaftes Verhalten wie bei Ihnen (Rückkehr ohne Ergebnis) nach 25 sek. Ursache ist lt. Console des Servers „Out of memory“, wie vermutet. Speicher (java max heap space) des Tomcat angepasst auf 256MB (-Xmx256M).
1,6 Mio Datensätze: Suche ohne Einschränkung: ca. 9 Sek (linearer Anstieg)
3,2 Mio Datensätze: Suche ohne Einschränkung: Fehlerhaftes Verhalten wie bei Ihnen (Rückkehr ohne Ergebnis) nach 1min. Ursache ist lt. Console des Servers „Out of memory“, wie vermutet. Speicher (java max heap space) des Tomcat angepasst auf 512MB (-Xmx512M).
3,2 Mio Datensätze: Suche ohne Einschränkung: ca. 18 Sek (linearer Anstieg)
6,4 Mio Datensätze: Suche ohne Einschränkung: Fehlerhaftes Verhalten wie bei Ihnen (Rückkehr ohne Ergebnis) nach 1,5min. Ursache ist lt. Console des Servers „Out of memory“, wie vermutet. Speicher (java max heap space) des Tomcat angepasst auf 1024MB (-Xmx1024M). Dann Speicherproblem im Client (Fehlermeldung „Out of memory“). Speicher (java max heap space) des Clients ebenfalls angepasst auf 1024MB (in /webapps/WEB-INF/jnlp/jnlp.xsl).
6,4 Mio Datensätze: Suche ohne Einschränkung: ca. 1 Min. (schlechter als linear, Analyse der Ursache steht noch aus)
Für alle Fälle gilt:
Ist das Suchergebnis einmal da, geht Runterblättern praktisch in Nullzeit (was man aufgeben würde, wenn man den obigen Umstand, dass immer alle IDs geladen werden, ändert – man hat also immer einen gewissen trade-off).
Sucht man mit Einschränkung (auf nicht indizierter Spalte), kommt das Ergebnis wesentlich schneller (ebenfalls linear). Wesentlicher Knackpunkt bei grossen Datenmengen scheint also der Umstand zu sein, dass sämtliche IDs mitgeladen werden.
z.B. nachname wie ‚*an*‘ liefert in meinem Fall ca. 700.000 Datensätze und dauert etwa 15 sek.
z.B. nachname wie ‚*ane*‘ liefert in meinem Fall ca. 65.000 Datensätze und dauert etwa 7 sek.
Bei 6,4 Mio Datensätzen hatte ich hin und wieder das Phänomen, dass die ersten Suchen noch funktionierten, irgendwann weitere Suchen in derselben Maske wieder ein Out of memory produziert haben. Weitere Suchen in neu aufgemachten Maske hingegen funktionierten wieder. Das deutet daraufhin, dass eine geöffnete Maske erst beim Schliessen benötigten Speicher zuverlässig wieder freigibt (obwohl es in diesem Fall früher sinnvoll wäre). Dem werden wir mit einem Memory Profiler weiter auf den Grund gehen.
Grüsse,
nuclosian