Zum Inhalt springen
EuroVPSEuroVPS

Warum sich Nextcloud langsam anfühlt, und was es wirklich behebt

Ein langsames Nextcloud braucht selten mehr Hardware. Hintergrundjobs, Caching, Locking, Indizes und der Office-Editor, in der Reihenfolge, in der wir sie prüfen, mit den genauen Einstellungen.

Von EuroVPS Engineering

5 Min. Lesezeit
Warum sich Nextcloud langsam anfühlt, und was es wirklich behebt

Wenn sich eine Nextcloud-Instanz träge anfühlt, ist der erste Reflex, ihr mehr CPU und Speicher zu geben. Meist ändert das nichts, weil die Zeit woanders hingeht: in Hintergrundjobs, die an der falschen Stelle laufen, in einen Cache, der nicht konfiguriert ist, in File Locks, die auf der Datenbank landen, in eine Tabelle ohne Index. In dieser Reihenfolge prüfen wir die Dinge, mit den Einstellungen, die jedes davon beheben. Alles hier gilt unabhängig davon, ob Nextcloud auf einem einfachen Server oder in Containern läuft.

Beginnen Sie mit dem, was Nextcloud Ihnen schon sagt

Nextcloud bringt eigene Gesundheitsprüfungen mit. Führen Sie sie aus, bevor Sie irgendetwas ändern:

sudo -u apache php occ setupchecks
sudo -u apache php occ status

Verwenden Sie den Benutzer des Webservers (apache, www-data oder nginx, je nach System). Dieselben Ergebnisse erscheinen in den Verwaltungseinstellungen unter Übersicht. Jede Warnung dort ist ein echter Befund. Beheben Sie sie zuerst. Mehrere der folgenden Punkte werden in dieser Liste auftauchen.

Hintergrundjobs dürfen nicht auf Seitenaufrufen mitfahren

Nextcloud hat Hausarbeit zu erledigen: Dateiscans, Vorschaubilder, Benachrichtigungen, Aufräumen, Ablauf von Aktivitäten. Standardmäßig, im AJAX-Modus, führt es jedes Mal einen Job aus, wenn ein Benutzer eine Seite lädt. Die Benutzer bezahlen die Hausarbeit mit ihren eigenen Seitenaufrufen, und auf einer ruhigen Instanz geraten die Jobs in Rückstand.

Wechseln Sie auf System-Cron:

sudo -u apache php occ background:cron

Lassen Sie dann cron.php alle fünf Minuten laufen. Ein systemd-Timer ist sauberer als ein Crontab-Eintrag, weil er Fehlschläge protokolliert:

# /etc/systemd/system/nextcloud-cron.service
[Service]
Type=oneshot
User=apache
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php

# /etc/systemd/system/nextcloud-cron.timer
[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
[Install]
WantedBy=timers.target

Aktivieren Sie ihn mit systemctl enable --now nextcloud-cron.timer. Wenn Sie schon dabei sind, legen Sie ein Wartungsfenster fest, damit schwere Jobs nachts laufen:

sudo -u apache php occ config:system:set maintenance_window_start --type=integer --value=1

Der Wert ist eine Stunde in UTC. Schwere Jobs laufen in den vier darauffolgenden Stunden.

Caching und File Locking

Ohne Memory Cache fragt Nextcloud die Datenbank immer wieder nach denselben Dingen. Ohne ein richtiges Locking-Backend holt sich außerdem jede Dateioperation ein Lock in der Datenbank. Konfigurieren Sie beides in der config.php:

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
  'host' => '/run/redis/redis.sock',
  'port' => 0,
],

APCu ist der schnelle lokale Cache in jedem PHP-Prozess. Redis hält den gemeinsamen Zustand und die File Locks. Verwenden Sie einen Unix-Socket, wenn Redis auf derselben Maschine läuft, und stellen Sie sicher, dass der Benutzer des Webservers ihn öffnen kann.

APCu muss auch für die Kommandozeile aktiviert werden, sonst beschwert sich occ:

; /etc/php.d/40-apcu.ini
apc.enable_cli=1

PHP selbst: OPcache und der FPM-Pool

Nextcloud ist eine große PHP-Anwendung. Ohne ausreichend OPcache kompiliert PHP Teile davon bei jeder Anfrage neu. Typische Startwerte:

opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=20000
opcache.revalidate_freq=60

setupchecks sagt Ihnen, ob der Interned Strings Buffer zu klein ist. Dimensionieren Sie dann den PHP-FPM-Pool nach dem Speicher, den Sie tatsächlich haben: pm.max_children multipliziert mit dem typischen Speicher eines PHP-Workers muss in den RAM passen, mit Platz für die Datenbank und Redis. Messen Sie den tatsächlichen Speicher eines Workers unter Last, bevor Sie wählen, statt eine Zahl aus einem Forum zu übernehmen.

Die Datenbank: Indizes und Big Integers

Upgrades fügen manchmal Indizes und Spalten hinzu, die bestehende Installationen nicht automatisch bekommen, weil ihre Anlage auf einer großen Tabelle Zeit braucht. Nextcloud überlässt diesen Schritt Ihnen:

sudo -u apache php occ db:add-missing-indices
sudo -u apache php occ db:add-missing-columns
sudo -u apache php occ db:add-missing-primary-keys
sudo -u apache php occ db:convert-filecache-bigint

Führen Sie diese nach jedem großen Upgrade aus, in einem Wartungsfenster, weil sie große Tabellen sperren können. Ein fehlender Index auf der File-Cache-Tabelle ist einer der häufigsten Gründe, warum sich eine große Instanz beim Durchblättern von Ordnern langsam anfühlt.

Vorschaubilder: im Voraus erzeugen

Miniaturansichten werden erzeugt, wenn jemand einen Ordner zum ersten Mal öffnet. Ein Ordner mit hochauflösenden Fotos bedeutet einen langsamen ersten Besuch für denjenigen, der zuerst dort ankommt. Zwei Dinge helfen. Begrenzen Sie die Größe der Vorschaubilder:

sudo -u apache php occ config:system:set preview_max_x --value=2048 --type=integer
sudo -u apache php occ config:system:set preview_max_y --value=2048 --type=integer

Und wenn Ihre Benutzer viele Bilder speichern, verwenden Sie die App Preview Generator, damit die Vorschaubilder im Hintergrundjob erzeugt werden statt bei Bedarf.

Der Office-Editor ist eine eigene Workload

Die Bearbeitung im Browser mit Collabora läuft als eigener Dienst. Nextcloud schickt ihm das Dokument, und Collabora rendert und bearbeitet es. Wenn Leute sagen «Nextcloud ist langsam», während sie Dokumente bearbeiten, ist der Engpass meist Collabora, nicht Nextcloud. Beobachten Sie seine CPU und seinen Speicher getrennt, während mehrere Personen gleichzeitig große Tabellenkalkulationen bearbeiten, und dimensionieren Sie ihn nach diesen Messungen.

Zwei Konfigurationspunkte zählen für Geschwindigkeit und Sicherheit zugleich. Verbinden Sie Nextcloud mit Collabora über einen Pfad, der schnell und nah ist. Und beschränken Sie, welche Server mit der WOPI-Schnittstelle von Collabora sprechen dürfen:

sudo -u apache php occ config:app:set richdocuments wopi_allowlist --value="10.0.0.0/24"

Tragen Sie dort den Adressbereich Ihres eigenen Nextcloud-Servers ein, damit nur Ihr Nextcloud Dokumente über Ihren Editor öffnen kann.

Festlegen, was läuft

Wenn Sie Nextcloud in Containern betreiben, pinnen Sie jedes Image (Nextcloud, Datenbank, Redis, Collabora) auf einen Tag, den Sie selbst gewählt haben.

Die Reihenfolge, kurz gefasst

  1. occ setupchecks und jede Warnung beheben.
  2. System-Cron über einen Timer, plus ein Wartungsfenster.
  3. APCu lokal, Redis für Locking und gemeinsamen Cache.
  4. OPcache richtig dimensioniert und ein FPM-Pool, der nach Messungen dimensioniert ist.
  5. Fehlende Indizes, Spalten und Schlüssel nach jedem Upgrade ergänzt.
  6. Vorschaubilder begrenzt und im Hintergrund erzeugt.
  7. Collabora als eigener Dienst gemessen und dimensioniert, mit einer WOPI-Allowlist.
  8. Jede Komponente auf eine Version gepinnt, die Sie selbst gewählt haben.

Erst nach all dem sagt Ihnen zusätzliche Hardware etwas Nützliches. So betreiben wir Nextcloud mit Collabora für unsere Kunden auf dedizierten Instanzen, und wir sehen uns Ihre gern an.

Mit einem Ingenieur sprechen

Verwandt: Managed Office-Dokumente auf Nextcloud · Privates E-Mail-Archiv mit lokaler KI-Suche

Veröffentlicht am 7. Oktober 2026.

Alle Notizen aus der Praxis