Zum Inhalt springen
Contact us

Die Server für eine große Migration dimensionieren

Die App führt eine Zeile pro Job und eine Zeile pro Lauf, jeweils mit den Zählwerten des Laufs – Dateien, Versionen, Volumen, Probleme – und keine Zeile pro Datei. Ein Lauf, der eine Million Dateien übertragen hat, ist eine einzige Zeile im Laufverlauf. Die Anzahl der Dateien spielt für die App daher keine Rolle: 100 Millionen Dateien und mehr werden gezählt, ohne dass die App wächst.

Ihre Tabellen werden auf dem Server gefiltert, sortiert und seitenweise geladen, und die Kennzahlen der Übersicht zählt die Datenbank. Dadurch bleibt jede Ansicht schnell, wie groß die Migration auch wird. Gemessen wurde in dieser Größenordnung auf einem kleinen Server mit 2 virtuellen CPUs und 512 MB für PHP:

WasGemessen mit
Jobs25.000, in 100 Gruppen und mit 50 Tags
Zeilen im Laufverlauf75.000 – und 225.000 für den PHP-Speicher, den eine Ansicht benötigt
Dateiprobleme200.000 und mehr
Von den Läufen gezählte DateienMindestens 100 Millionen – in der App stehen nur ihre Zählwerte
Gleichzeitig laufende Jobs4, die Höchstzahl, die der SMART-Migration-Server ausführt
PHP-Speicher, den eine Anfrage benötigtHöchstens etwa 140 MB für den Tab Aufträge; 45 bis 95 MB für die anderen Tabs. Siehe PHP-Speicher pro Anfrage

Die App verarbeitet beliebig viele Jobs, ein einzelner Job sollte jedoch nicht zu groß sein: Eine Bibliothek mit Hunderttausenden oder Millionen von Dateien wird nach Ordnern auf mehrere Jobs aufgeteilt. Andernfalls ist der Job langsam und wird möglicherweise nicht abgeschlossen. Siehe Quellen

Der Nextcloud-Server, auf den die Dateien geschrieben werden, wird für die Dateien selbst dimensioniert, wie der nächste Abschnitt erläutert.

SMART Migration schreibt jede Datei direkt per WebDAV in Nextcloud Files und meldet sich dabei mit einem App-Passwort an. Die App enthält nur die Jobs und ihre Ergebnisse, die Dateien laufen also nie über sie. Jede Datei und jede ihrer Versionen ist eine eigene Anfrage. Der Nextcloud-Server wird daher für die Anzahl der Dateien pro Stunde dimensioniert, die vier Jobs gleichzeitig schreiben, und nicht nur für das Volumen.

WasWarum es wichtig ist
PHP-WorkerJeder Upload belegt einen PHP-Worker, während er geschrieben wird. Sind es zu wenige, stauen sich die Anfragen: Die Migration wird langsamer, und ebenso die Seiten von Nextcloud für alle anderen Benutzer
RedisNextcloud sperrt jede Datei, die es schreibt. Mit Redis für Dateisperren und Caching bleiben die Sperren außerhalb der Datenbank
Die DatenbankJede Datei ist eine Zeile im Datei-Cache von Nextcloud, die beim Eintreffen der Datei geschrieben wird. Eine schnelle Datenbank auf SSD hält mit vielen kleinen Dateien Schritt
SpeicherSchnelle Datenträger mit Platz für die gesamte Migration einschließlich der Versionen sowie Kontingente für die Zielkonten und Team-Ordner, die dafür Platz lassen
GrößenbeschränkungenDie Grenzwerte von PHP und eines etwaigen Proxys vor Nextcloud für Größe und Dauer einer Anfrage müssen die größten Dateien zulassen
PHP-SpeicherBelassen Sie memory_limit bei 512 MB, wie von Nextcloud empfohlen. Die größte Anfrage der App, der Tab Aufträge, benötigt davon etwa 140 MB, und der Laufverlauf liest seine Läufe abschnittsweise, sodass seine Ansichten auch bei wachsendem Umfang klein bleiben. Siehe Leistung und Last auf dem Nextcloud-Server
Verarbeitung bei jedem UploadVirenscans, serverseitige Verschlüsselung und Regeln der Dateizugriffskontrolle verlängern die Verarbeitung jeder Datei. Testen Sie die Geschwindigkeit mit diesen Funktionen eingeschaltet, so wie sie es während der Migration sein werden

Nextcloud begrenzt nicht, wie viele Dateien ein angemeldetes Konto schreibt. Sein Brute-Force-Schutz richtet sich stattdessen gegen das Erraten von Passwörtern. Jede fehlgeschlagene Anmeldung von einer Adresse verlangsamt die nächsten Anfragen von dieser Adresse, auch die gültigen. Nach zu vielen Fehlversuchen lehnt Nextcloud sie stundenlang mit 429 Too Many Requests ab. Da sich der SMART Migration-Server von einer einzigen Adresse aus anmeldet, stoppt dies jeden Job, und die App zeigt Offline an, weil der Server auch die API der App nicht mehr erreicht.

Eine fehlgeschlagene Anmeldung während einer Migration bedeutet meist ein Passwort, das nicht mehr funktioniert: ein unter Einstellungen → Sicherheit widerrufenes App-Passwort, ein geändertes Passwort des Dienstkontos oder das App-Passwort, das die App für einen Lauf in die Dateien eines Benutzers ausgestellt hat und das nach dem Ende des Laufs verwendet wurde. So beugen Sie dem vor und beheben es:

  1. Zuerst das Passwort korrigieren

    Geben Sie dem SMART Migration-Server ein funktionierendes App-Passwort. Solange er weiterhin eines sendet, das fehlschlägt, drosselt Nextcloud ihn weiter.

  2. Die Adresse des Servers auf die Zulassungsliste setzen

    Fügen Sie in Nextcloud unter Verwaltungseinstellungen → Sicherheit die Adresse des SMART Migration-Servers zur Brute-Force-Zulassungsliste hinzu und aktivieren Sie Ratenbegrenzung für zugelassene IPs umgehen. Eine Adresse auf der Liste kann Passwörter ausprobieren, ohne gedrosselt zu werden. Fügen Sie daher nur diese eine feste Adresse hinzu.

  3. Eine bereits gedrosselte Adresse freigeben

    occ security:bruteforce:attempts <address> zeigt, wie weit die Drosselung fortgeschritten ist, und occ security:bruteforce:reset <address> hebt sie sofort auf.

Hinter einem Proxy teilen sich alle Clients eine Adresse

Steht Nextcloud hinter einem Reverse Proxy, ohne dass trusted_proxies in der Konfiguration gesetzt ist, sieht es jeden Client mit der Adresse des Proxys. Ein falsches Passwort, das irgendein Benutzer eingibt, drosselt dann alle, auch den SMART Migration-Server. Setzen Sie trusted_proxies, damit Nextcloud die eigene Adresse jedes Clients sieht.

Ein 429 kann auch von einer Komponente vor Nextcloud stammen: einem Reverse Proxy, einer Firewall oder einem Schutzmechanismus des Hosting-Anbieters, der Anfragen pro Adresse begrenzt. Lassen Sie die Adresse des SMART Migration-Servers auch dort durch. Ein 503 Service Unavailable bedeutet, dass Nextcloud überlastet ist oder sich im Wartungsmodus befindet. Siehe Was eine Migration umfasst und was ihre Geschwindigkeit bestimmt

Jede Datei, die ein Analyse- oder Migrationslauf verarbeitet, wird in der PostgreSQL-Berichtsdatenbank erfasst: wo sie liegt, ihre Größe, Versionen, Datumsangaben, Bezeichnungen, Metadaten und was mit ihr geschehen ist. Das sind die Daten, die SMART BI.pbix liest, und die Daten, die mit der Migration wachsen.

Sie wachsen mit jedem Lauf, nicht nur mit jeder Datei

Eine Datei, die analysiert, dann in einem Test migriert und noch einmal endgültig migriert wird, wird von jedem dieser Läufe erfasst. Auch wiederkehrende Nachhol-Läufe tragen dazu bei. Planen Sie die Berichtsdatenbank für die Läufe, die das Projekt durchführen wird, und nicht nur für die Dateien in der Quelle.

Bei zig Millionen Dateien ist die Berichtsdatenbank ein eigener Server und keine Nebenaufgabe des SMART Migration-Servers. Jeder Lauf schreibt während der Migration in sie, und eine Aktualisierung in Power BI liest das gesamte Dateiinventar auf einmal aus ihr.

Ausgangspunkt bei 100 Millionen DateienWarum
SpeicherSchnelle SSD oder NVMe mit mehreren Hundert GB für die Daten, ihre Indizes und Reserve für WachstumDie Dateizeilen enthalten lange Pfade und Metadaten; langsame Datenträger lassen jede Aktualisierung und die Schreibvorgänge jedes Laufs warten
Arbeitsspeicher32–64 GBDamit die Indizes und die am häufigsten gelesenen Daten im Arbeitsspeicher bleiben
Prozessor8 Kerne oder mehrLäufe schreiben, während Aktualisierungen lesen
NetzwerkEine schnelle Verbindung zum SMART Migration-Server und zu den Computern, die den Bericht aktualisierenEine Aktualisierung überträgt das gesamte Inventar darüber

Dies sind Ausgangswerte: Der tatsächliche Bedarf hängt von den Metadaten der Quellen ab und davon, wie viele Läufe jede Datei durchläuft. Ein gehosteter PostgreSQL-Dienst eignet sich ebenso, gleich dimensioniert. Sichern Sie die Datenbank wie jede Produktivdatenbank: Sie ist die Dokumentation der Migration.

Power BI Desktop importiert die Daten des Berichts in den Arbeitsspeicher des Computers: Solange SMART BI.pbix geöffnet ist, liegt das gesamte darin enthaltene Dateiinventar im RAM, und eine Aktualisierung benötigt bis zum Doppelten davon, während die neue Kopie neben der alten aufgebaut wird. Lange Textspalten – Pfade und Dateinamen – lassen sich am schlechtesten komprimieren und belegen den größten Teil davon.

Das Minimum von Microsoft gilt für das Programm, nicht für diese Daten

Microsoft verlangt für Power BI Desktop 2 GB Arbeitsspeicher, empfohlen sind 4 GB. Damit lässt sich das Programm öffnen; ein Dateiinventar mit zig Millionen Zeilen fasst es nicht. Für eine Migration dieser Größe ist ein Computer mit 64–96 GB Arbeitsspeicher nicht ungewöhnlich.

Dateien im BerichtArbeitsspeicher, als grober Ausgangswert
Einige Millionen16–32 GB
Zig Millionen64 GB
100 Millionen und mehr64–96 GB oder mehr
  • 64-Bit-Windows und das 64-Bit-Power BI Desktop, ein schneller Prozessor mit vielen Kernen und eine SSD.
  • Dort aktualisieren, wo der Arbeitsspeicher ist: Ein gut ausgestatteter Computer oder eine entsprechend dimensionierte virtuelle Maschine aktualisiert den Bericht und lädt ihn in Nextcloud hoch; alle anderen öffnen die hochgeladene Datei. Das Öffnen benötigt weniger als das Aktualisieren.
  • Den Bericht auf das Nötige beschränken: Lassen Sie Spalten weg, die keine Seite verwendet, oder filtern Sie die Daten auf die betreffenden Wellen oder Websites. Siehe Den SMART BI-Bericht an Ihre Bedürfnisse anpassen

Im Power BI-Dienst veröffentlicht, hat das semantische Modell des Berichts denselben Bedarf, und die Lizenz legt die Obergrenze fest. Mit Power BI Pro kann ein semantisches Modell höchstens 1 GB umfassen. Auf einer Premium- oder Fabric-Kapazität kann ein Modell mit dem Speicherformat für große semantische Modelle bis zum Arbeitsspeicher der Kapazität wachsen:

Fabric-KapazitätMaximaler Arbeitsspeicher für ein semantisches Modell
F3210 GB
F6425 GB
F12850 GB
F256100 GB

Eine Aktualisierung kann das Doppelte der Modellgröße benötigen, sodass die Aktualisierung eines Modells, das sich der Hälfte des Arbeitsspeichers der Kapazität nähert, fehlschlagen kann. Die Grenzwerte von Microsoft ändern sich: Prüfen Sie sie in der Dokumentation von Microsoft, bevor Sie eine Kapazität wählen. SMART Migration benötigt den Dienst nicht; Power BI Desktop ist für alle kostenlos. Siehe Power BI für Einsteiger

Die obigen Zahlen sind ein Richtwert. Entscheidend ist Ihre eigene Größenordnung, und ein Pilot zeigt sie:

  1. Einen repräsentativen Teil analysieren

    Führen Sie Analyse für einige Websites, OneDrives und Freigaben aus, die dem Rest ähneln – nicht nur für die kleinsten.

  2. Den Bericht aktualisieren und messen

    Aktualisieren Sie SMART BI.pbix in Power BI Desktop und notieren Sie den belegten Arbeitsspeicher im Windows-Task-Manager, die Größe der Datei und die Größe der Berichtsdatenbank.

  3. Auf die gesamte Migration hochrechnen

    Multiplizieren Sie mit den Dateien der gesamten Migration und den Läufen, die jede Datei durchlaufen wird, und dimensionieren Sie den PostgreSQL-Server und den Power BI-Computer, bevor die großen Wellen beginnen.

Siehe auch