Wo die Arbeit stattfindet
Abschnitt betitelt „Wo die Arbeit stattfindet“Die App enthält den Plan und die Aufzeichnung einer Migration; sie verschiebt selbst keine Dateien. Das Lesen der Quellen, das Migrieren der Dateien und ihrer Versionen sowie das Schreiben der Berichte übernimmt der SMART-Migration-Server auf einem Windows-Rechner in Ihrem Netzwerk, der wie jeder andere Client in Nextcloud Files schreibt. Der Nextcloud-Server speichert für die App die Auftragsdefinitionen und die Ergebnisse und beantwortet die Aufrufe des SMART-Migration-Servers und der Personen, die die App nutzen.
Nur kurze Aufrufe
Jeder Aufruf von SMART Migration wird sofort beantwortet. Keine Anfrage wird auf dem Nextcloud-Server offen gehalten, während SMART Migration auf Arbeit wartet.
Eine Abfrage pro geöffneter App
Eine geöffnete App fragt Nextcloud jeweils nur eine Sache ab: alle 5 Sekunden, während ein Auftrag läuft, alle 30 Sekunden, während keiner läuft, und gar nicht, während ihr Browser-Tab ausgeblendet ist.
Seitenweise auf dem Server
Jede Liste wird auf dem Server gefiltert, sortiert und seitenweise geladen, jede Kennzahl in der Übersicht wird von der Datenbank gezählt, und ein Baum wird nur so weit aufgebaut, wie er aufgeklappt ist.
Die Aufrufe von SMART Migration
Abschnitt betitelt „Die Aufrufe von SMART Migration“SMART Migration wendet sich an die App; die App ruft SMART Migration nie selbst auf. Seine Aufrufe sind wenige, kurz und werden sofort beantwortet.
| Aufruf | Wie oft |
|---|---|
| Abfrage des nächsten Auftrags | Etwa alle 10 Sekunden, solange ein Platz frei ist und kein Auftrag wartet, und sofort erneut, nachdem ein Auftrag zugewiesen wurde. Ein auf Bereit gesetzter Auftrag startet daher innerhalb von etwa 10 Sekunden. |
| Das Lebenszeichen (Heartbeat) | Alle 30 bis 60 Sekunden, damit die Markierung Live weiß, dass der Server läuft. |
| Fortschritt, Ergebnisse und das Sitzungsprotokoll | Während ein Auftrag läuft; das Sitzungsprotokoll in Stapeln von bis zu 1.000 Meldungen. |
| Dateiprobleme | In Stapeln von bis zu 1.000 pro Aufruf. |
Die eigene Ratenbegrenzung von Nextcloud beantwortet mehr als 120 Anfragen für einen Auftrag innerhalb einer Minute von einem Konto mit zu viele Anfragen, sodass selbst ein Client, der ununterbrochen anfragt, den Server nicht belasten kann.
Die im Browser geöffnete App
Abschnitt betitelt „Die im Browser geöffnete App“Eine geöffnete App fragt ihre eigene Nextcloud mit einer kleinen Anfrage ab, und die Markierung Live, die Tabellen, die Laufbenachrichtigungen und die Übersicht richten sich alle nach deren Antworten. Während ein Auftrag läuft oder gleich startet, fragt sie alle 5 Sekunden; während keiner läuft, alle 30 Sekunden; während der Browser-Tab ausgeblendet ist, gar nicht. Eine Tabelle wird nur dann neu gelesen, wenn sich ihr Inhalt geändert hat, sodass eine Rückmeldung von SMART Migration, die nichts ändert, die geöffneten Tabellen nichts kostet. Aktualisieren oben rechts liest den geöffneten Tab sofort neu, mit einer einzigen Anfrage wie der der Tabelle selbst.
Die Migrationskennzahlen der Übersicht werden von der Datenbank gezählt und beibehalten, bis ein Lauf startet oder endet: Dateiprobleme, die während laufender Aufträge erfasst werden, lösen keine erneute Zählung aus.
Größen, für die sie ausgelegt und gemessen ist
Abschnitt betitelt „Größen, für die sie ausgelegt und gemessen ist“Die App ist für 100 Gruppen, 50 Tags, 25.000 Aufträge, 75.000 Zeilen im Laufverlauf, 200.000 Dateiprobleme und vier gleichzeitig laufende Aufträge ausgelegt und gemessen, auf einem kleinen Server mit 2 CPU-Kernen und PHPs memory_limit bei 512 MB. Bei diesen Größen antwortet die Liste eines Tabs in etwa einer Sekunde oder weniger und die Abfrage einer geöffneten App in Sekundenbruchteilen.
PHP-Speicher pro Anfrage
Abschnitt betitelt „PHP-Speicher pro Anfrage“Jede Anfrage der App belegt ihren PHP-Speicher nur kurz und gibt ihn wieder frei, sobald sie beantwortet ist. Gemessen bei den oben genannten Größen, einschließlich des eigenen Anteils von Nextcloud von etwa 40 MB:
| Anfrage | PHP-Speicher |
|---|---|
| Die Abfrage einer geöffneten App und die Übersicht | Etwa 45 MB |
| Laufverlauf: der Baum, die Liste, die Filter und Alle aufklappen | 45 bis 75 MB |
| Laufverlauf: die Zusammenfassungskarte über eine Gruppe | Etwa 45 MB |
| Dateiprobleme | 85 bis 95 MB |
| Aufträge | Etwa 140 MB |
Nextcloud schreibt für jede Anfrage, die mehr als die Hälfte von memory_limit belegt – 256 MB bei 512 MB –, eine Warnung in sein Protokoll; jede Anfrage der App bleibt deutlich darunter.
Der Laufverlauf wächst stetig
Abschnitt betitelt „Der Laufverlauf wächst stetig“Der Laufverlauf ist die einzige Liste, die nur wächst: Seine Läufe bleiben erhalten, bis jemand sie löscht oder der Retention schedule eines Auftrags dies tut, und jeder wiederkehrende Auftrag fügt weitere hinzu. Daher halten seine Ansichten nie alle Läufe im Speicher. Sie lesen sie abschnittsweise, behalten pro Lauf nur wenige Zahlen und lesen nur die angezeigten Läufe und die aufgeklappten Gruppen vollständig. Eine Ansicht mit 75.000 Läufen benötigt 45 bis 75 MB PHP-Speicher, eine Ansicht mit 225.000 Läufen 50 bis 115 MB: Jeder weitere Lauf fügt höchstens einige Hundert Bytes hinzu. Die Zusammenfassungskarte über eine Gruppe liest nur die Läufe dieser Gruppe.
Planen Sie PHP für die Nutzer, nicht für die App
Die App benötigt keine eigenen PHP-Worker: Die Aufrufe von SMART Migration sind kurz, und keiner wird offen gehalten. Dimensionieren Sie PHP-FPM für die Personen, die Nextcloud nutzen, wie es die Tuning-Empfehlungen von Nextcloud beschreiben. Die größte Anfrage, der Tab Aufträge mit 25.000 Aufträgen, benötigt kurzzeitig etwa 140 MB PHP-Speicher; belassen Sie memory_limit daher bei 512 MB, wie von Nextcloud empfohlen.
Hintergrundjobs
Abschnitt betitelt „Hintergrundjobs“Zwei Hintergrundjobs laufen im eigenen Cron von Nextcloud, und keiner von ihnen ruft nach außen:
- Alle 5 Minuten werden die für Zielbenutzer erstellten App-Passwörter widerrufen, sobald deren Läufe beendet sind – gelesen aus einer Tabelle mit wenigen Zeilen.
- Stündlich werden die Aufbewahrungspläne der Aufträge angewendet: Die Läufe, die den
Retention scheduleihres Auftrags überschritten haben, werden gelöscht, für die Aufträge, die einen haben.
Datenbanken
Abschnitt betitelt „Datenbanken“Die App läuft auf den von Nextcloud unterstützten Datenbanken – MariaDB und MySQL, PostgreSQL und SQLite – und wird bei jeder Änderung der App automatisch auf jeder von ihnen installiert und geprüft. Ihre Tabellen tragen die Indizes, die ihre Listen und Abfragen lesen.
Siehe auch