jschei
I'm new here

Effizientes Löschen / Freigeben von sehr vielen Objekten via API

Hallo zusammen,

wir mussten feststellen, dass die Lösch- und Freigabeoperation eines Ordners welcher ca. 300 Inhaltsseiten beinhaltet über die API sehr lange dauert (so ca. 5 Min. je Operation also 10 min. insgesamt). Zur Info: getestet wurde in der Entwicklungsumgebung auf einem Core i7 (4x2,5ghz)Rechner mit 8 Gig Ram. Allerdings konnte man im Monitoring auch keine deutlich erhöhte Speicher-/CPU-Auslastung feststellen.

Wir haben es sowohl mit den Server-seitigen als auch Client-seitigen Methoden probiert (AccessUtil.delete/AccessUtil.release und .delete()/.release()). Beim Client-seitigem Ansatz waren es sogar 15 min.

Meine Frage: Ist das Normalverhalten in Firstspirit oder kann man dies evtl. durch bessere Hardware optimieren? UND: gibt es evtl. einen Ansatz um solche Löschoperationen effizienter durchzuführen z.B. das Ablegen der gelöschten Revisionen im Repository verhindern o.Ä?

Vielen Dank

Jonathan

0 Kudos
5 Replies
pavone
I'm new here

Hallo Jonathan,

welche genaue FirstSpirit Version verwendet ihr?

Viele Grüße

Tim

0 Kudos

Hallo Tim,

5.1.605.72781

Gruß

Jonathan

0 Kudos

Hallo Jonathan,

könntest du uns mehr Informationen bezöglich deines genaureren Vorgehens schildern?

Beim Versuch das Verhalten nachzustellen, habe ich eine Server-Seitige Freigabe auf einem Ordner mit genau 300 Seiten gestartet.

Die Freigabe lief bei mir innehralb wenigen Sekunden durch (5.1.605).

Quelltext:

AccessUtil.release(e, false, true, true, de.espirit.firstspirit.access.store.IDProvider.DependentReleaseType.DEPENDENT_RELEASE_NEW_AND_CHANGED);

Welche Parameter ggf. welche Methode genau verwendet Ihr?

Wie komplex aufgebaut sind die betroffenen Seiten?

Viele Grüße,

Sebastian

0 Kudos

Hallo,

aus eigener Erfahrung haben die Durchlaufzeiten von Aktionen wie z.B. Freigeben, Löschen, Anlegen von Objekten (Ordnern, Sieten, Medien etc.) auf dem lokalen System leider nicht immer etwas mit dem "realen" System im betrieb zu tun.

Je nach größe des Projekts, Anzahl an Revisionen im Projekt, Anbindung des Filesystems etc. können diese massiv variieren! Persönliches Beispiel: Automatisiertes Anlegen und Freigeben einer Baumstruktur im Strukturbereich: Lokal ca. 3-5 Minuten vs. auf dem "realen" System.

Zeitfresser waren z.B. die create() Operationen, da diese aktiv auf das Filesystem zugreifen um die Objekte zu erzeugen etc. Wenn hier die Anbindung langsam ist (lokal SSD vs. "real" FileShare) geht einiges an Zeit verloren. Zusätzlich hat eine (sehr sehr) hohe ANzahl an Revisionen im Projekt einen Einfluss auf die Durchlaufzeit gehabt. (Lokal waren dies im Entwicklungsprojekt auch deutlich weniger als im realen Projekt.)

Bewährt hat sich die Verwendung von rekursiven Aufrufen, wenn möglich. Sprich nicht jedes Objekt einzeln löschen und dann den übergeordneten Ordner freigeben, sondern alles mit nur einem Aufruf.

Evtl. ist der Performance-Hund also auch im Unterschied zwischen der realen Umgebung und der Entwicklungsumgebung begraben.

Grüße

Sandro

0 Kudos

Hallo Jonathan,

benötigst Du noch weitere Hilfe oder haben Dir die bisherigen Antworten bereits geholfen?

In diesem Fall wäre es super, wenn Du die "richtige Antwort" entsprechend markierst, damit auch andere

Community-Teilnehmer diese auf den ersten Blick finden. Solltest Du zwischenzeitlich eine eigene Lösung

gefunden haben, wäre es nett, wenn Du diese hier bereitstellst.

Viele Grüße

Sebastian

0 Kudos