fragen stichworte

Wie kann ich Artifactory 2.6.x so einstellen, dass weniger Speicherplatz verwendet wird?

Mein Team verwendet JFrog Artifactory 2.6.7.1 Pro. Wir planen ein Upgrade auf 3.x, aber sie werden aus nichttechnischen Gründen verlangsamt.

Mittlerweile verwendet unsere 2.6.x-Installation mehr als 190 GB Festplatte. Das meiste davon ist im Repo/Daten/Dateispeicher.

Ich habe bereits die folgenden Wartungsoptionen ausgeführt und einige Festplatten freigegeben:

  • zapped Caches
  • gelöschte Versionen
  • Speichermüllsammlung ausführen (dies war am effektivsten und erhielt ganze 2 GB zurück)
  • komprimierte die Datenbank
  • bereinigte nicht verwendete Daten
  • Ausführen von nicht verwendeten Artefakten zur Cache-Bereinigung

Ich habe speziell die Einstellung "Momentaufnahmen zum Beibehalten" für Repos überprüft, die möglicherweise Momentaufnahmen enthalten. Für diese Repos wurde ein angemessener Wert (weniger als 10) festgelegt.

Welche Einstellungen sollte ich überprüfen, um Speicherplatz freizugeben?

antworten

Einige der von Ihnen erwähnten Operationen (Zapping-Caches, Löschen nicht verwendeter Daten usw.) sind einmalige Operationen, die möglicherweise vorübergehende Auswirkungen haben, aber ich bin mir nicht sicher, wie nützlich sie im normalen Betrieb sind. Schließlich sind die Caches aus einem bestimmten Grund da.

Andere, wie GC, werden standardmäßig von Artifactory ausgeführt (z. B. GC wird alle 4 Stunden ausgeführt).

Alle Details zur Speicherverwaltung sind in einer Artifactory User Guide-Seite aufgeführt.

Praktisch gibt es 5 Konfigurationsoptionen, mit denen Sie die Speichergröße routinemäßig steuern können:

  • Setup-Snapshot-Bereinigungsrichtlinie
  • Löschen Sie nicht verwendete zwischengespeicherte Artefakte.
  • Löschen Sie alte Builds mit dem Jenkins Artifactory Plugin.
  • Schreiben Sie ein Skript, das REST-API-Bereinigungsaufrufe verwendet.
  • Schreiben Sie ein Benutzer-Plugin, das eine für Ihren Fall korrekte Bereinigungslogik implementiert. Hier sind einige Beispiele, mit denen Sie beginnen können.
  1. Sie müssen die Sicherung des artifactory-Servers von einem anderen Server verschieben, damit Sie mehr Platz haben.
  2. USE AQL zur Verwaltung von Bereinigungsproblemen.

Zuerst sollten wir alte Artefakte finden, die vor über einem Jahr erstellt wurden (vorausgesetzt, der heutige Tag ist der 18. Mai 2015). Dies ist mit AQL einfach: items.find({"type":"file", "created":{"$lt":"2014-05-18T"}})

Beachten Sie, wie wir Vergleichsoperatoren wie "$ lt" mit Datumsangaben verwenden können und dass wir den in AQL integrierten Standard nutzen, indem mehrere Kriterien mit "$ and" kombiniert werden.

möchte etwas löschen, wenn es in den letzten 6 Monaten nicht heruntergeladen wurde: Fügen wir also unserer Abfrage ein weiteres Kriterium hinzu, diesmal über das Feld "download" in der Domäne "stat":

items.find({"type":"file", "created":{"$lt":"2014-05-18T"}, "stat.downloaded":{"$lt":"2014-11-18T"}})

Wenn Sie sicherstellen möchten, dass nichts Wichtiges gelöscht wird, überspringt er die Release-Repositorys. items.find({"type":"file", "created":{"$lt":"2014-05-18T"}, "stat.downloaded":{"$lt":"2014-11-18T"}, "repo":{"$nmatch":"*release*"}})

Hier haben wir ein Kriterium hinzugefügt, dass der Repository-Name das Muster "release" nicht enthält. Wenn Sie über ein Repository mit dem Namen "release" verfügen - es handelt sich jedoch nicht um ein Release-Repository ... wird es ebenfalls übersprungen, und Sie möchten möglicherweise Ihre Namenskonvention überdenken.

"große" Artefakte größer als 1000 Byte.

Hier ist die letzte AQL-Abfrage, die alle Artefakte im System findet, die alle diese Kriterien erfüllen: items.find({"type":"file", "created":{"$lt":"2014-05-18T"}, "stat.downloaded":{"$lt":"2014-11-18T"}, "repo":{"$nmatch":"*release*"}, "size":{"$gt":"1000"}})