Nextcloud/Memory caching

Aus Foxwiki

Nextcloud - Memory caching - Kurzbeschreibung

Beschreibung

Sie können die Leistung Ihres Nextcloud-Servers mit Memory Caching erheblich verbessern

  • Dabei werden häufig angefragte Objekte im Speicher abgelegt, um sie schneller abrufen zu können
  • Es gibt zwei Arten von Caches, die Sie verwenden können: einen PHP-Opcode-Cache, der allgemein als Opcache bezeichnet wird, und einen Daten-Cache für Ihren Webserver, der allgemein als "Memcache" bezeichnet wird

Hinweis

Wenn Sie keinen lokalen Memcache installieren und aktivieren, sehen Sie eine Warnung auf Ihrer Nextcloud-Verwaltungsseite. Ein Memcache ist nicht erforderlich

  • Sie können die Warnung ignorieren, wenn Sie dies wünschen. Wenn Sie in Ihrer config.php nur einen verteilten Cache(memcache.distributed) und keinen lokalen Cache(memcache.local) aktivieren, werden Sie die Cache-Warnung trotzdem sehen

Ein PHP-Opcache speichert kompilierte PHP-Skripte, so dass sie nicht bei jedem Aufruf neu kompiliert werden müssen

  • PHP bündelt den Zend OPcache seit Version 5.5 im Kern, so dass Sie keinen Opcache manuell installieren müssen

Das Datencaching wird vom Benutzer bereitgestellt

  • Nextcloud unterstützt mehrere Speicher-Caching-Backends, so dass Sie die Art von Memcache wählen können, die Ihren Bedürfnissen am besten entspricht
  • Die unterstützten Caching-Backends sind
APCu, APCu 4.0.6 und höher erforderlich Ein lokaler Cache für Systeme
Redis, PHP-Modul 2.2.6 und höher erforderlich Für lokales und verteiltes Caching sowie transaktionale Dateisperren
Memcached Für die verteilte Zwischenspeicherung

Datencaches oder Memcaches müssen in Nextcloud explizit konfiguriert werden, indem Sie den gewünschten Cache installieren und aktivieren und dann den entsprechenden Eintrag in derconfig.php hinzufügen (siehe Konfigurationsparameter für einen Überblick über alle möglichen Konfigurationsparameter)

Empfehlungen

Sie können sowohl einen lokalen als auch einen verteilten Cache verwenden

  • Empfohlene Caches sind APCu und Redis
  • Nachdem Sie den von Ihnen gewählten Memcache (Daten-Cache) installiert und aktiviert haben, überprüfen Sie, ob er aktiv ist, indem Sie die PHP-Version und -Informationen ausführen
Hinweis
Spezifische Optionen für die Cache-Konfiguration finden Sie im entsprechenden Abschnitt weiter unten

Kleiner Server

Verwenden Sie nur APCu

'memcache.local' => '\OC\Memcache\APCu',

Organisationen mit Einzel-server

Verwenden Sie Redis für alles außer dem lokalen Memcache

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
     'host' => 'localhost',
     'port' => 6379,
],

Organisationen mit gebündeltensetups

Verwenden Sie APCu für den lokalen Cache und entweder Redis-Cluster ...

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis.cluster' => [
    'seeds' => [ // provide some/all of the cluster servers to bootstrap discovery, port required
       'cache-cluster:7000',
       'cache-cluster:7001',
    ],
 ],
..

Memcached-Cluster für verteilte und sperrende Caches

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcache.locking' => '\OC\Memcache\Memcached',
'memcached_servers' => [
    [ 'server1.example.com', 11211 ],
    [ 'server2.example.com', 11211 ],
 ],
..
Hinweis
Wenn Sie mehrere Webserver betreiben und in Ihrer config.php einen verteilten Cache(memcache.distributed) oder einen File-Locking-Provider(memcache.locking) aktivieren, müssen Sie sicherstellen, dass sie sich auf denselben memcache-Server/Cluster beziehen und nicht auf localhost oder einen Unix-Socket

Redis vs. APCu

Hinweise zu Redis vs. APCu zum Thema Speichercaching
  • APCu ist beim lokalen Caching schneller als Redis
  • Wenn Sie genügend Speicher haben, verwenden Sie APCu für das Memory Caching und Redis für das File Locking
  • Wenn Sie wenig Speicherplatz haben, verwenden Sie Redis für beides

APCu

APCu ist ein Daten-Cache, der in den meisten Linux-Distributionen verfügbar ist

  • Auf Red Hat/CentOS/Fedora-Systemen installieren Siephp-pecl-apcu
  • Auf Debian/Ubuntu/Mint-Systemen installieren Sie php-apcu

Nachdem Sie Ihren Webserver neu gestartet haben, fügen Sie diese Zeile in Ihre config.php-Datei ein

'memcache.local' => '\OC\Memcache\APCu',

Aktualisieren Sie Ihre Nextcloud-Verwaltungsseite, und die Cache-Warnung sollte verschwinden

Warnung
APCu ist standardmäßig im CLI deaktiviert, was zu Problemen mit den Cron-Jobs von nextcloud führen kann
  • Bitte stellen Sie sicher, dass Sie apc.enable_cli in Ihrer php.ini-Konfigurationsdateiauf 1 setzen oder fügen Sie --define apc.enable_cli=1 an den Cron-Job-Aufruf an

Redis

Nextcloud/Redis

Memcached

Memcached ist ein zuverlässiger Oldtimer für die gemeinsame Zwischenspeicherung auf verteilten Servern und funktioniert gut mit Nextcloud, mit einer Ausnahme: Es ist nicht für die Verwendung mit Transactional File Lockinggeeignet, da es keine Sperren speichert und Daten jederzeit aus dem Cache verschwinden können (Redis ist der beste Memcache dafür)

Hinweis

Stellen Sie sicher, dass Sie das PHP-Modul memcached installieren und nicht memcache, wie in den folgenden Beispielen

  • Nextcloud unterstützt nur das PHP-Modul memcached

Die Einrichtung von Memcached ist einfach

  • Unter Debian/Ubuntu/Mint installieren Sie memcached undphp-memcached
  • Das Installationsprogramm wird memcached automatisch starten und so konfigurieren, dass es beim Start gestartet wird

Unter Red Hat/CentOS/Fedora installieren Sie memcached undphp-pecl-memcached

  • Es wird nicht automatisch gestartet, so dass Sie Ihren Dienstmanager verwenden müssen, um memcached zu starten und es beim Booten als Daemon zu starten

Sie können mit ps ax überprüfen, ob der Memcached-Daemon läuft

ps ax | grep memcached
19563 ? Sl 0:02 /usr/bin/memcached -m 64 -p 11211 -u memcache -l
127.0.0.1

Starten Sie Ihren Webserver neu, fügen Sie die entsprechenden Einträge in Ihreconfig.php ein und aktualisieren Sie Ihre Nextcloud-Admin-Seite

Memcached-Konfiguration in Nextcloud (config.php)

Dieses Beispiel verwendet APCu für den lokalen Cache, Memcached als verteilten Memcache und listet alle Server im gemeinsamen Cache-Pool mit ihren Portnummern auf

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcache.locking' => '\OC\Memcache\Memcached',
'memcached_servers' => [
     [ 'server0.example.com', 11211 ],
     [ 'server1.example.com', 11211 ],
     [ 'server2.example.com', 11211 ],
 ],

Cache-Verzeichnislocation

Das Cache-Verzeichnis ist standardmäßig data/$user/cache, wobei $user der aktuelle Benutzer ist

  • Sie können die Direktive "cache_path" in config.php(siehe Konfigurationsparameter) verwenden, um einen anderen Speicherort auszuwählen


Anhang

Siehe auch

Links

Weblinks