|
|
Zeile 8: |
Zeile 8: |
| ==== Links ==== | | ==== Links ==== |
| ===== Weblinks ===== | | ===== Weblinks ===== |
|
| |
| = TMP =
| |
| 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 <code>config.php</code> nur einen verteilten Cache<code>(memcache.distributed</code>) und keinen lokalen Cache<code>(memcache.local</code>) 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 der<code>config.php</code> 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',
| |
| ],
| |
| ],
| |
| ..
| |
| * oder Memcached-Cluster ...
| |
| '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 ],
| |
| ],
| |
| ..
| |
| * für verteilte und sperrende Caches
| |
|
| |
| ; Hinweis
| |
| : Wenn Sie mehrere Webserver betreiben und in Ihrer <code>config.php</code> einen verteilten Cache<code>(memcache.distributed</code>) oder einen File-Locking-Provider<code>(memcache.locking</code>) aktivieren, müssen Sie sicherstellen, dass sie sich auf denselben memcache-Server/Cluster beziehen und nicht auf <code>localhost</code> 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 Sie<code>php-pecl-apcu</code>
| |
| * Auf Debian/Ubuntu/Mint-Systemen installieren Sie <code>php-apcu</code>
| |
|
| |
| Nachdem Sie Ihren Webserver neu gestartet haben, fügen Sie diese Zeile in Ihre <code>config.php-Datei</code> 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 <code>apc.enable_cli</code> in Ihrer <code>php.ini-Konfigurationsdatei</code>auf <code>1</code> setzen oder fügen Sie <code>--define apc.enable_cli=1</code> an den Cron-Job-Aufruf an
| |
|
| |
| == Redis ==
| |
| Redis ist ein hervorragender moderner Memcache für verteiltes Caching und als Key-Value-Speicher für Transactional File Locking, da er garantiert, dass zwischengespeicherte Objekte so lange verfügbar sind, wie sie benötigt werden
| |
|
| |
| Das PHP-Modul Redis muss Version 2.2.6+ sein
| |
| * Wenn Sie eine Linux-Distribution verwenden, in der die unterstützten Versionen dieses Moduls nicht enthalten sind oder Redis überhaupt nicht enthalten ist, lesen Sie Memcached
| |
|
| |
| Unter Debian/Ubuntu/Mint installieren Sie <code>redis-server</code> und <code>php-redis</code>
| |
| * Das Installationsprogramm startet automatisch <code>redis-server</code> und konfiguriert es so, dass es beim Start gestartet wird
| |
|
| |
| Unter CentOS und Fedora installieren Sie <code>redis</code> und <code>php-pecl-redis</code>
| |
| * Es wird nicht automatisch gestartet, daher müssen Sie Ihren Dienstmanager verwenden, um<code>redis</code> zu starten und es beim Booten als Daemon zu starten
| |
|
| |
| Sie können mit <code>ps ax</code> überprüfen, ob der Redis-Daemon läuft
| |
| ps ax | grep redis
| |
| 22203 ? Ssl 0:00 /usr/bin/redis-server 127.0.0.1:6379
| |
| Starten Sie Ihren Webserver neu, fügen Sie die entsprechenden Einträge in Ihre <code>config.php</code> ein und aktualisieren Sie Ihre Nextcloud-Admin-Seite
| |
|
| |
| === Redis-Konfiguration in Nextcloud (config.php) ===
| |
| Um die beste Leistung zu erzielen, verwenden Sie Redis für die Dateisperrung, indem Sie dies hinzufügen
| |
| 'memcache.locking' => '\OC\Memcache\Redis',
| |
| Außerdem sollten Sie Redis für den verteilten Server-Cache verwenden
| |
| 'memcache.distributed' => '\OC\Memcache\Redis',
| |
| Außerdem könnten Sie Redis für den lokalen Cache verwenden, was aber nicht empfohlen wird (siehe Warnung unten)
| |
| 'memcache.local' => '\OC\Memcache\Redis',
| |
|
| |
| ; Warnung
| |
| : Die Verwendung von Redis als lokaler Cache auf einem Multi-Server-System kann zu Problemen führen
| |
| * Außerdem sollte APCu (siehe Abschnitt oben) selbst bei einer Ein-Server-Konfiguration schneller sein
| |
|
| |
| Wenn Sie Redis für eine der oben genannten Cache-Einstellungen verwenden, müssen Sie außerdem entweder die <code>redis-</code> oder die <code>redis.cluster-Konfiguration</code> in <code>config.php</code> angeben
| |
|
| |
| Die folgenden Optionen können konfiguriert werden, wenn ein einzelner Redis-Server verwendet wird (alle außer <code>Host</code> und <code>Port</code> sind optional)
| |
| * Für die beiden letzteren siehe die nächsten Abschnitte)
| |
| 'memcache.locking' => '\OC\Memcache\Redis',
| |
| 'memcache.distributed' => '\OC\Memcache\Redis',
| |
| 'memcache.local' =>'\OC\Memcache\Redis' ,
| |
| 'redis' => [
| |
| // 'host' => see connection parameters below
| |
| // 'port' => see connection parameters below
| |
| 'user' => 'nextcloud',
| |
| 'password' => 'password',
| |
| 'dbindex' => 0,
| |
| 'timeout' => 1.5,
| |
| 'read_timeout' => 1.5,
| |
| ],
| |
| Die folgenden Optionen können bei der Verwendung eines Redis-Clusters konfiguriert werden (alle außer <code>Seeds</code> sind optional)
| |
| 'memcache.locking' => '\OC\Memcache\Redis',
| |
| 'memcache.distributed' => '\OC\Memcache\Redis',
| |
| 'memcache.local' =>'\OC\Memcache\Redis' ,
| |
| 'redis.cluster' => [
| |
| 'seeds' => [ // provide some/all of the cluster servers to bootstrap discovery, port required
| |
| 'cache-cluster:7000',
| |
| 'cache-cluster:7001',
| |
| 'cache-cluster:7002',
| |
| 'cache-cluster:7003',
| |
| 'cache-cluster:7004',
| |
| 'cache-cluster:7005'
| |
| ],
| |
| 'failover_mode' => \RedisCluster::FAILOVER_ERROR,
| |
| 'timeout' => 0.0,
| |
| 'read_timeout' => 0.0,
| |
| 'user' => 'nextcloud',
| |
| 'password' => 'password',
| |
| 'dbindex' => 0,
| |
| ],
| |
| Hinweis
| |
|
| |
| Der Port ist als Teil der Server-URL erforderlich
| |
| * Es ist jedoch nicht erforderlich, alle Server aufzulisten: Wenn beispielsweise alle Server über denselben DNS-Namen lastverteilt sind, ist nur dieser Servername erforderlich
| |
|
| |
| === Verbindung über TCP ===
| |
| Um eine Verbindung zu einem entfernten oder lokalen Redis-Server über TCP herzustellen, verwenden Sie
| |
| 'redis' => [
| |
| 'host' => 'redis-host.example.com',
| |
| 'port' => 6379,
| |
| ],
| |
|
| |
| === Verbindung über TLS ===
| |
| Um eine Verbindung über TCP over TLS herzustellen, fügen Sie die folgende Konfiguration hinzu
| |
| 'redis' => [
| |
| 'host' => 'tls://127.0.0.1',
| |
| 'port' => 6379,
| |
| 'ssl_context' => [
| |
| 'local_cert' => '/certs/redis.crt',
| |
| 'local_pk' => '/certs/redis.key',
| |
| 'cafile' => '/certs/ca.crt',
| |
| 'verify_peer_name' => false,
| |
| ],
| |
| ],
| |
|
| |
| === TLS-Verbindung mit Redis-Cluster ===
| |
| Um eine Verbindung über TCP over TLS herzustellen, fügen Sie die folgende Konfiguration hinzu
| |
| 'redis.cluster' => [
| |
| 'seeds' => [ // provide some/all of the cluster servers to bootstrap discovery, port required
| |
| 'cache-cluster:7000',
| |
| 'cache-cluster:7001',
| |
| ],
| |
| 'ssl_context' => [
| |
| 'local_cert' => '/certs/redis.crt',
| |
| 'local_pk' => '/certs/redis.key',
| |
| 'cafile' => '/certs/ca.crt',
| |
| 'verify_peer_name' => false,
| |
| ],
| |
| ],
| |
|
| |
| === Verbindung über UNIX-Socket ===
| |
| Wenn Sie eine Verbindung zu Redis herstellen möchten, die so konfiguriert ist, dass sie auf einem Unix-Socket lauscht (was empfohlen wird, wenn Redis auf demselben System wie Nextcloud läuft), verwenden Sie diese Beispielkonfiguration<code>config.php</code>
| |
| 'redis' => [
| |
| 'host' => '/run/redis/redis-server.sock',
| |
| 'port' => 0,
| |
| ],
| |
|
| |
| Nur die Variablen "host" und "port" sind erforderlich, die anderen sind optional
| |
|
| |
| Aktualisieren Sie die redis-Konfiguration in <code>/etc/redis/redis.conf</code> entsprechend: Entfernen Sie die Unix-Socket-Optionen und stellen Sie sicher, dass die Einstellungen für "socket" und "port" mit Ihrer Nextcloud-Konfiguration übereinstimmen
| |
|
| |
| Stellen Sie sicher, dass Sie die richtigen Berechtigungen für redis.sock setzen, damit Ihr Webserver darauf lesen und schreiben kann
| |
| * Dazu müssen Sie normalerweise den Webserver-Benutzer zur redis-Gruppe hinzufügen
| |
| usermod -a -G redis www-data
| |
| Und ändern Sie die <code>unixsocketperm</code> der <code>redis.conf</code> entsprechend
| |
| unixsocketperm 770
| |
| Möglicherweise müssen Sie Apache und Redis neu starten, damit die Änderungen wirksam werden
| |
| systemctl restart apache2
| |
| systemctl restart redis-server
| |
| Redis ist sehr konfigurierbar; lesen Sie die Redis-Dokumentation, um mehr zu erfahren
| |
|
| |
| === Verwendung der Redis-Sitzunghandler ===
| |
| Wenn Sie Redis zum Sperren und/oder Zwischenspeichern verwenden, möchten Sie Redis vielleicht auch für die Sitzungsverwaltung nutzen
| |
| * Redis kann für die zentrale Sitzungsverwaltung über mehrere Nextcloud-Anwendungsserver hinweg verwendet werden, im Gegensatz zum Standard Handler
| |
| * Wenn Sie den Redis-Handler verwenden, ''MÜSSEN'' Sie jedoch sicherstellen, dass die Sitzungssperre aktiviert ist
| |
| * Zum jetzigen Zeitpunkt aktiviert der Redis Session Handler standardmäßig ''KEIN'' Session Locking, was in einigen Nextcloud-Applikationen, die stark von Session Writes Gebrauch machen, wie z.B
| |
| * Talk, zu Session Corruption führen kann
| |
| * Darüber hinaus gibt der Redis-Session-Handler derzeit keinen Fehler zurück, wenn die Anwendung keine Sperre erhält, selbst wenn das Session Locking aktiviert ist
| |
| * Durch Hinzufügen der folgenden Einstellungen in Ihrer <code>php.ini-Datei</code> können Sie Sitzungsstörungen verhindern, wenn Sie Redis als Sitzungshandler verwenden
| |
| redis.session.locking_enabled=1
| |
| redis.session.lock_retries=-1
| |
| redis.session.lock_wait_time=10000
| |
| Weitere Informationen zur Konfiguration des phpredis Session Handlers finden Sie auf derPhpRedis GitHub Seite
| |
|
| |
| == 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 <code>memcached</code> und<code>php-memcached</code>
| |
| * Das Installationsprogramm wird <code>memcached</code> automatisch starten und so konfigurieren, dass es beim Start gestartet wird
| |
|
| |
| Unter Red Hat/CentOS/Fedora installieren Sie <code>memcached</code> und<code>php-pecl-memcached</code>
| |
| * Es wird nicht automatisch gestartet, so dass Sie Ihren Dienstmanager verwenden müssen, um <code>memcached</code> zu starten und es beim Booten als Daemon zu starten
| |
|
| |
| Sie können mit <code>ps ax</code> ü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 Ihre<code>config.php</code> 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 <code>data/$user/cache</code>, wobei <code>$user</code> der aktuelle Benutzer ist
| |
| * Sie können die Direktive <code>"cache_path"</code> in <code>config.php</code>(siehe Konfigurationsparameter) verwenden, um einen anderen Speicherort auszuwählen
| |
|
| |
|
| </noinclude> | | </noinclude> |