Startseite
» NETZWERK-ADMIN
»
Hohe CPU-Auslastung bei der Nextcloud-Vorschaugenerierung beheben: Vorschaugenerator einrichten
Hohe CPU-Auslastung bei der Nextcloud-Vorschaugenerierung beheben: Vorschaugenerator einrichten
Kurz gesagt: Installieren Sie die Preview Generator-App, aktivieren Sie sie, führen Sie eine erste, sorgfältig geplante Generierung durch und planen Sie die Generierung anschließend occ preview:pre-generatefür Zeiten mit geringerer Auslastung. Begrenzen Sie außerdem die Größe der Vorschauen und die Anzahl der gleichzeitig von Nextcloud generierten neuen Vorschauen. Die App verlagert die Verarbeitung in eine andere Zeit, bevor ein Benutzer eine Datei öffnet; sie setzt keine feste CPU-Beschränkung und kann die Festplattennutzung erhöhen.
Diese Konfiguration eignet sich für einen selbstgehosteten Nextcloud-Server, bei dem Vorschaubilder beim Surfen spürbare CPU-Spitzen verursachen, insbesondere auf einem kleinen Server mit einer bestehenden Foto- oder Dokumentenbibliothek. Sie ist weniger geeignet, wenn Ihre Instanz serverseitige Verschlüsselung verwendet: Das Preview Generator-Projekt führt Verschlüsselung als bekannte Inkompatibilität auf. Managed Hosting, Nextcloud AIO, Docker und Paketinstallationen verwenden zudem unterschiedliche Befehlspfade. Passen Sie die Befehle daher an Ihre Bereitstellung an. Führen Sie sie nicht aus einem unbekannten Verzeichnis aus.
Die aktuelle App-Anleitung empfiehlt, die App zu installieren und zu aktivieren, sie preview:generate-alleinmalig auszuführen und preview:pre-generatespätere Dateiänderungen zu planen. Der erste Befehl kann bei einer großen Bibliothek ressourcenintensiv sein. Beginnen Sie mit einem Benutzer oder Ordner und einem Worker. Lesen Sie die README-Datei des Preview Generator-Projekts und die Befehlsoptionen und wählen Sie im Nextcloud App Store eine mit Ihrer Nextcloud-Version kompatible Version aus .
1. Bestätigen Sie, dass dies die richtige Lösung ist.
Ermitteln Sie zunächst, wann die CPU-Auslastung ansteigt. Tritt dies auf, wenn Benutzer Ordner mit vielen Fotos oder Dokumente öffnen, für die eine Vorschau benötigt wird, kann die Vorabgenerierung einen Großteil dieser Arbeit in einen geplanten Task auslagern. Bleibt die CPU-Auslastung hoch, obwohl niemand surft, oder treten Spitzenwerte im Zusammenhang mit einem anderen Dienst auf, kann der Vorschaugenerator die Ursache möglicherweise nicht beheben. Überprüfen Sie Ihren Prozessmonitor und die Nextcloud-Protokolle, bevor Sie Einstellungen ändern.
Der Vorschaugenerator speichert hinzugefügte oder geänderte Dateien und verarbeitet sie im Hintergrund. Vorhandene Vorschauen reduzieren die Kosten späterer Anfragen, fehlende Vorschauen können aber auch bei Bedarf generiert werden, bevor sie vom geplanten Prozess verarbeitet werden. Dadurch verringert die App die Belastungsspitzen für den Benutzer, wenn die Warteschlange abgearbeitet ist; eine vollständige Vermeidung von CPU-Spitzen kann jedoch nicht garantiert werden. Zudem wird Speicherplatz für die schnellere Bereitstellung von Vorschauen benötigt. Für eine kleine Bibliothek mit seltenem Zugriff ist das bedarfsgesteuerte Verhalten von Nextcloud möglicherweise ausreichend.
2. Installieren Sie die kompatible App-Version.
Auf einer generischen Cloud-Admin-Seite wird eine App-Karte mit Bildvorschau angezeigt, die den Installations- und Aktivierungsschritt veranschaulicht; das Layout ist kein versionsspezifischer Screenshot.
Melden Sie sich als Nextcloud-Administrator an, öffnen Sie den Bereich „Apps“, suchen Sie nach „Preview Generator“ und installieren und aktivieren Sie ihn. Vergewissern Sie sich vorher, dass der App Store eine stabile Version für Ihre installierte Nextcloud-Hauptversion anbietet. Vermeiden Sie es, den neuesten App-Ordner manuell über eine Version zu kopieren, die der App Store als inkompatibel kennzeichnet.
Administratoren mit Shell-Zugriff können die App überprüfen oder aktivieren occ. Ein typischer Installationsbefehl ist unten aufgeführt; passen Sie den Pfad zur PHP-Binärdatei und zu Nextcloud an Ihren Host an. Verwenden Sie für Docker oder AIO stattdessen den entsprechenden Container-Befehl oder die Anweisungen für den Scheduler der jeweiligen Bereitstellung.
3. Nextcloud-Hintergrundprozesse auf Cron einstellen
Wählen Sie in den Nextcloud-Verwaltungseinstellungen „Cron“ als Hintergrundjob-Modus und überprüfen Sie, ob der reguläre Nextcloud-System-Cronjob ausgeführt wird. Laut der README-Datei der App benötigt der integrierte Vorschau-Hintergrundjob den Cron-Modus; Webcron- und AJAX-Modi werden für diesen langlaufenden Job nicht unterstützt. Wenn Ihr regulärer Cronjob nicht funktioniert, reicht die Installation dieser App allein nicht aus, um die Warteschlange am Laufen zu halten.
Verwechseln Sie nicht den normalen cron.php-Zeitplan von Nextcloud mit dem optionalen, dedizierten preview:pre-generateZeitplan der App. Es handelt sich um zwei separate Mechanismen. Sie können den integrierten Hintergrundjob der App oder einen dedizierten System-Cron-Befehl verwenden. Wenn Sie den dedizierten Befehl wählen, empfiehlt das Projekt, den integrierten Vorschau-Hintergrundjob zu deaktivieren, um zu vermeiden, dass beide Pfade für dieselbe Warteschlange ausgeführt werden.
Auf einer Planungsseite wird eine aktive, wiederkehrende Aufgabe angezeigt, die eine Vorschau der Arbeit an ein Befehlsfenster übergibt und Miniaturansichten der Ergebnisse zurückgibt.
4. Reduzieren Sie die Vorab-Arbeitslast vor dem ersten Massenlauf.
Ein generisches Konfigurationsfeld kombiniert codeähnliche Einstellungen mit Steuerelementen für die Bildgröße und den Prozessor und veranschaulicht so die beiden Grenzwerte, die Administratoren anpassen sollten.
Um rechenintensive Vorschauen zu erstellen, reduzieren Sie die Anzahl gleichzeitig laufender Vorschauen. In der Konfigurationsreferenz von Nextcloud 35 preview_concurrency_newwird die Anzahl der gleichzeitig generierten Vorschauen gesteuert. Der dokumentierte Standardwert ist vier, und das Handbuch empfiehlt, diesen Wert nicht höher als die Anzahl der CPU-Kerne zu halten. Testen Sie auf einem kleinen Host einen Wert wie zwei oder, falls der Server nicht mehr reagiert, einen Wert von eins. Dies begrenzt die Anzahl gleichzeitig laufender Prozesse, jedoch kann ein einzelnes großes Bild oder Video weiterhin erhebliche CPU-Leistung beanspruchen.
Auch die Vorschaugröße ist wichtig. Nextcloud 35-Dokumente haben standardmäßig eine maximale Breite und Höhe von 4096 Pixeln. Durch Verringern dieser Werte preview_max_xlassen sich Rechen- und Speicherbedarf reduzieren, allerdings auf Kosten kleinerer Vorschaubilder. Sichern Sie die Konfigurationsdatei und fügen Sie die Einstellungen in das bestehende PHP-Array ein; ersetzen Sie die Datei nicht durch einen Codeausschnitt. Ein Administrator könnte beispielsweise beide Werte auf 2048 setzen und die Qualität in den Ansichten „Dateien“ und „Fotos“ testen.preview_max_yconfig/config.php
Die App kann verschiedene Größenvarianten generieren. Die zugehörige README-Datei enthält ein reduziertes Größenprofil für häufig verwendete Dateien, Fotos und Aktivitäten: quadratische Größen 64 256, Größen mit voller Breite und Höhe sowie 256 4096leere Größen. Diese Variantengruppen können übersprungen werden. Verwenden Sie diese Einstellungen nur, wenn sie zu den von Ihren Nutzern verwendeten Apps passen. Erinnerungs-Timelines oder andere Apps benötigen möglicherweise zusätzliche Größen. Das Projekt weist darauf hin, dass die Vorschaugrößen den akzeptierten Größenregeln entsprechen und die konfigurierten Maximalwerte nicht überschreiten dürfen. Lesen Sie die Einstellungen für Vorschaugröße und -qualität von Nextcloud sowie die versionsspezifische Konfigurationsreferenz .widthSizesheightSizes
5. Generieren Sie vorhandene Vorschauen in einem kleinen ersten Durchgang.
Nachdem die App aktiviert und die Grenzwerte festgelegt wurden, führen Sie den ersten Generator für einen Testordner oder einen einzelnen Benutzer anstatt für die gesamte Instanz aus. Die App unterstützt das Filtern nach Benutzer-ID oder Pfad, und der Befehl akzeptiert die Anzahl der Worker. Verwenden Sie für einen ersten, vorsichtigen Durchlauf einen Worker.
Auf einer Einstellungsseite für Hintergrundprozesse wird die ausgewählte Option für geplante Aufgaben angezeigt; die genauen Bezeichnungen und verfügbaren Optionen variieren je nach Nextcloud-Version.
Ersetzen Sie <Pfad> alice, den Pfad und den Nextcloud-Installationspfad durch die tatsächlichen Werte Ihres Servers. Die Pfadoption hat die Form <Pfad> /[username]/files/[folder path]. Wenn Sie den Pfad und den Benutzerfilter weglassen, durchsucht der Befehl möglicherweise die gesamte Bibliothek. Führen Sie den Batch-Prozess aus, wenn weniger Benutzer aktiv sind, überwachen Sie CPU-, Speicher- und Festplattenauslastung und stoppen Sie den Prozess, um die Serverstabilität erneut zu überprüfen. Erhöhen Sie die Anzahl der Worker nicht einfach, um die Ausführung zu beschleunigen, bevor Sie die Auswirkungen gemessen haben.
6. Neu hinzugefügte oder geänderte Dateien in den Zeitplan einplanen
Sobald der Testlauf erfolgreich verläuft, fügen Sie ihn preview:pre-generateeinem System-Cronjob hinzu. Die README-Datei der App nennt beispielsweise einen Zehn-Minuten-Takt, dies ist jedoch keine zwingende Vorgabe. Wählen Sie ein Intervall, das dem Upload-Volumen und der verfügbaren Leerlaufzeit entspricht. Beispielsweise könnte eine Crontab-Datei des Webserver-Kontos die folgende Zeile enthalten, wobei die Pfade an die Installation angepasst werden müssen:
Ein Fenster im Terminalstil zeigt einen ausgewählten Ordner gefolgt von Bildminiaturen, die den ersten Durchlauf eines einzelnen Workers auf einem begrenzten Pfad darstellen.
Wenn Sie diesen dedizierten System-Cronjob verwenden, deaktivieren Sie den integrierten Vorschau-Hintergrundprozess der App, wie vom Projekt empfohlen. Die dokumentierte App-Einstellung lautet:
Lassen Sie den normalen cron.php-Job von Nextcloud aktiviert. Verwenden Sie für Container und gehostete Plattformen den vom jeweiligen System unterstützten Scheduler, anstatt einen Hostpfad in einen Container-Cron-Eintrag einzufügen. Wenn die Anwendung mit aktivierter Verschlüsselung installiert ist, wenden Sie sich bitte an Ihren Administrator oder Hosting-Anbieter; diese Konfiguration wird vom Projekt derzeit als nicht unterstützt aufgeführt.
7. Überwachen Sie die Warteschlange und bestätigen Sie die Verbesserung.
Ein generisches Überwachungspanel kombiniert ein CPU-Diagramm mit Fortschrittsbalken für die Warteschlange, um die Serverlast und den Backlog in der Vorschau zu vergleichen.
Führen Sie den Befehl aus occ preview:queue-stats, um die Warteschlange für die Vorverarbeitung und veraltete Vorschauen zu überprüfen. Eine Warteschlange, die zwischen geplanten Ausführungen kleiner wird, deutet darauf hin, dass der Worker die Daten verarbeitet. Wächst sie hingegen stetig an, fügen Benutzer Dateien schneller hinzu, als der konfigurierte Job sie verarbeiten kann. Erhöhen Sie in diesem Fall die Ausführungshäufigkeit oder die zulässigen Joblimits vorsichtig, nachdem Sie geprüft haben, ob die zusätzliche CPU-Last akzeptabel ist. Die Anwendung zeigt Limits für die Jobausführungszeit und die Anzahl der Vorschauen pro Ausführung an. Laut README bedeutet Null unbegrenzt. Wählen Sie daher auf einem ressourcenbeschränkten Host nicht leichtfertig den Wert Null.
Vergleichen Sie die CPU-Spitzenwerte vor und nach der Einführung zu vergleichbaren Zeiten. Öffnen Sie anschließend als normaler Benutzer einen repräsentativen Fotoordner und eine Dokumentenvorschau. Prüfen Sie, ob die Miniaturansichten angezeigt werden, die Seiten weiterhin reagieren und sich die CPU-Auslastung nach der geplanten Verarbeitung normalisiert. Ein gleichmäßigerer CPU-Verlauf tagsüber mit angemessenem Fortschritt in der Warteschlange ist ein positives Ergebnis. Ein ständig wachsender Rückstand oder langsamere Benutzersitzungen deuten darauf hin, dass der Zeitplan, das Größenprofil oder der zugrunde liegende Vorschau-Anbieter überprüft werden muss.
Eine Galerie im Datei-Stil zeigt Bildminiaturen an, die die visuelle Überprüfung darstellen, ob die angeforderten Vorschauen nun geladen werden.
Wichtige Grenzwerte und sichere Reinigung
Einige Vorschauformate sind von serverseitigen Programmen abhängig: Im Nextcloud-Handbuch wird FFmpeg für Videovorschauen und LibreOffice für Office-Dokumentvorschauen aufgeführt. Diese Formate können sich anders verhalten als herkömmliche Bildminiaturen, und ihre Unterstützung hängt von der Konfiguration des Anbieters ab. Reduzieren Sie zunächst die Anzahl gleichzeitiger Zugriffe und testen Sie eine kleine Auswahl an Dateien, bevor Sie den Anbieter wechseln oder Dienste hinzufügen.
Wenn Sie die Vorschau-Dimensionen oder die unterstützten Dateitypen ändern und zwischengespeicherte Vorschauen verwerfen müssen, bietet Nextcloud ab Version 31 occ preview:cleanupdiese Möglichkeit (siehe Projekt-README). Dabei werden alle generierten Vorschaudateien entfernt. Anschließend erstellt Nextcloud bei Bedarf neue Vorschauen, sobald Benutzer auf Dateien zugreifen. Dies kann vorübergehend zu den CPU-Spitzen führen, die Sie eigentlich reduzieren möchten. Erstellen Sie daher gegebenenfalls Backups, planen Sie die Bereinigung regelmäßig und vermeiden Sie das manuelle Löschen des AppData-Vorschauverzeichnisses im Rahmen der routinemäßigen Optimierung. Die README-Datei des Vorschaugenerators beschreibt außerdem, .nomediawie Sie einen Ordner und seine Unterordner gegebenenfalls überspringen können.
Neben einem Schild und einem Schloss erscheinen ein Ordner und ein Symbol für eine versteckte Datei, die die Einschränkung der Verschlüsselung und die Möglichkeit, einen Ordner zu überspringen, veranschaulichen.
In der Praxis eignet sich der Vorschaugenerator gut, wenn langsame On-Demand-Vorschauen sichtbare Lastspitzen verursachen, Hintergrundprozesse geplant werden können und ausreichend Speicherplatz für zwischengespeicherte Größen vorhanden ist. Kombinieren Sie ihn mit einem moderaten Limit für gleichzeitige Zugriffe, Vorschauabmessungen, die den tatsächlichen Anzeigeanforderungen entsprechen, und einem Testlauf im großen Maßstab. Wenn die Instanz verschlüsselt ist, ohne Shell-Planung verwaltet wird oder aus Gründen, die nicht mit Vorschauanfragen zusammenhängen, CPU-gebunden ist, sollten diese Einschränkungen vor der Bereitstellung untersucht werden.