Hallo,
vielleicht hat jemand Hinweise, wo ich weitere Informationen dazu finde oder sogar konkrete Tipps, wie derzeit so ein "Problem" gelöst wird.
Wie die Überschrift verrät, geht es darum möglichst viel RAM Speicher einzusparen. Derzeit bewege ich mich mit knapp 120M noch nicht grundsätzlich am Limit, aber aus meiner Sicht kann das nicht gut sein und es muss einen Weg geben, das Ganze zu optimieren. Selbstverständlich rede ich hier nicht von der Dauerlast, sondern von klar auszumachenden "Prozessen", die entsprechend viel Speicher "fressen" und nur sehr selten ausgelöst werden.
Um was geht es konkret? Derzeit beschäftigen mich zwei vorrangig zwei unterschiedliche "Prozesse".
1) Import einer CSV Datei mit knapp 5000 Zeilen und jeweils 60 Spalten. Die "Rohdaten" haben schon ein Volumen von über 3M. Verarbeitet wird das Ganze derzeit über einen Upload im Browser, die Daten müssen aufbereitet werden (da geht es bespielsweise um Anpassung von Zeit-/Datumsstrukturen und ähnliches), so dass nach dem Speichern in der Datenbank knapp 120M RAM durch sind. Das kann auf lange Zeit nicht gut gehen, zumal ich nicht abschätzen kann, wie sich die Datenmenge aufgrund der Skalierung entwickelt. Eine Splittung der Datei in mehrere Teile soll möglichst vermieden werden, auch ist eine "Aufbereitung" vor dem Import weniger das Ziel.
2) Die Daten sollen nach dem Import auf bestimmte Eigenschaften und Abhängigkeiten geprüft werden. Dazu hatte ich die glorreiche Idee einen Objektbaum mit den Daten nebst der zugehörigen Referenzdaten zu erstellen. Schon alleine die Datenbankabfrage braucht bei 5000 Datensätzen und jeweils 3-10 Referenzen pro Datensatz knapp über 72M Speicher. Bis dahin wurde noch kein Datensatz auf die entsprechenden Bedingungen geprüft. Auch das erscheint mir sehr viel.
Gibt es eine Möglichkeit solche "Prozesse" in Teilen abzuarbeiten, so dass weniger Arbeitsspeicher verbraucht wird? Welche Möglichkeiten gibt es solche Abläufe zu splitten?
Während eines kurzes Austausches mit einem Kollegen kam das Schlagwort Upload der Datei mithilfe von Ajax ins Spiel. Könnte das ein Ansatz sein?
Viele Grüße
ec
vielleicht hat jemand Hinweise, wo ich weitere Informationen dazu finde oder sogar konkrete Tipps, wie derzeit so ein "Problem" gelöst wird.
Wie die Überschrift verrät, geht es darum möglichst viel RAM Speicher einzusparen. Derzeit bewege ich mich mit knapp 120M noch nicht grundsätzlich am Limit, aber aus meiner Sicht kann das nicht gut sein und es muss einen Weg geben, das Ganze zu optimieren. Selbstverständlich rede ich hier nicht von der Dauerlast, sondern von klar auszumachenden "Prozessen", die entsprechend viel Speicher "fressen" und nur sehr selten ausgelöst werden.
Um was geht es konkret? Derzeit beschäftigen mich zwei vorrangig zwei unterschiedliche "Prozesse".
1) Import einer CSV Datei mit knapp 5000 Zeilen und jeweils 60 Spalten. Die "Rohdaten" haben schon ein Volumen von über 3M. Verarbeitet wird das Ganze derzeit über einen Upload im Browser, die Daten müssen aufbereitet werden (da geht es bespielsweise um Anpassung von Zeit-/Datumsstrukturen und ähnliches), so dass nach dem Speichern in der Datenbank knapp 120M RAM durch sind. Das kann auf lange Zeit nicht gut gehen, zumal ich nicht abschätzen kann, wie sich die Datenmenge aufgrund der Skalierung entwickelt. Eine Splittung der Datei in mehrere Teile soll möglichst vermieden werden, auch ist eine "Aufbereitung" vor dem Import weniger das Ziel.
2) Die Daten sollen nach dem Import auf bestimmte Eigenschaften und Abhängigkeiten geprüft werden. Dazu hatte ich die glorreiche Idee einen Objektbaum mit den Daten nebst der zugehörigen Referenzdaten zu erstellen. Schon alleine die Datenbankabfrage braucht bei 5000 Datensätzen und jeweils 3-10 Referenzen pro Datensatz knapp über 72M Speicher. Bis dahin wurde noch kein Datensatz auf die entsprechenden Bedingungen geprüft. Auch das erscheint mir sehr viel.
Gibt es eine Möglichkeit solche "Prozesse" in Teilen abzuarbeiten, so dass weniger Arbeitsspeicher verbraucht wird? Welche Möglichkeiten gibt es solche Abläufe zu splitten?
Während eines kurzes Austausches mit einem Kollegen kam das Schlagwort Upload der Datei mithilfe von Ajax ins Spiel. Könnte das ein Ansatz sein?
Viele Grüße
ec
Kommentar