Lange Ladezeiten, opcache sollte aktiv sein, nextcloud bemÀngelt es

Hallo Community,

ich habe Nextcloud (20.0.7) auf meinem dedicatet Server installiert. Es ist ein folgendes System:

  • Intel Core i7-4770 (4Kerne, 8 Threads, 3,4 GHz)
  • 32 GB RAM
  • 2 x HDD SATA 2,0 TB

Auf dem Server lÀuft Ubuntu 20.04 und es sind ein paar wenig frequentierte Webseiten sowie ein noch ungenutzter Jitsi-Meet-Server drauf. Also sollte Leistung satt vorhanden sein.

Orientiert habe ich mich an der Anleitung von youtube zu Apfelcast Nectcloud 20 auf ubuntu 20.04

Da der LAMP-Server installiert war und PHP-fpm aktiv ist, bin ich mit der Anleitung (Textform des Videos) NC Ubuntu20.04 - Pastebin.com
bei der Installation der PHP-Module eingestiegen.

Die Installation erfolgte ohne Probleme, die gemeldeten Probleme von Nextcloud unter: Einstellungen -> Verwaltung: Übersicht habe ich grĂ¶ĂŸtenteils, dank der guten Anleitungen gelöst.

Einzig folgende Meldung verbleibt:

Es gibt einige Warnungen bei Deiner Systemkonfiguration.

  • Es wurde kein PHP-Memory-Cache konfiguriert. Zur Erhöhung der LeistungsfĂ€higkeit kann ein >Memory-Cache konfiguriert werden. Weitere Informationen findest Du in der [Dokumentation].

Bitte ĂŒberprĂŒfe noch einmal die [Installationsanleitungen :arrow_upper_right:] und kontrolliere das [Protokoll] auf mögliche Fehler oder Warnungen.

ÜberprĂŒfe die Sicherheit Deiner Nextcloud ĂŒber [unseren Sicherheitsscanner :arrow_upper_right:]

Die erforderlichen Werte unter /etc/php/7.4/apache2/php.ini habe ich angepasst. Und laut phpinfo-Datei lÀuft der opcache von PHP, aber Nextcloud sieht das anders.

FĂŒr das Aufrufen der Seite benötigt er schon 20 sec und wenn man weiter navigiert bleibt es trĂ€ge, das ist definitiv zu lang. Hat jemand von Euch einen Tip woran es liegen kann?

Viele GrĂŒĂŸe und Danke fĂŒr euer Wissen!

Christofer

Hast du den APCu Cache in der config.php aktiviert und konfiguriert? So wie es ausschaut deckt das die von dir verlinkte Anleitung nicht ab.

Nextcloud empfiehlt in ihrer Doku, APCu fĂŒr den lokalen File-Cache und Redis fĂŒr den lokalen Filelocking Mechanismus zu verwenden. Das ist etwas RAM-intensiver als Redis alleine, dafĂŒr aber performanter. Sollte aber bei dir kein Problem sein

Additional notes for Redis vs. APCu on memory caching

APCu und Redis zu installieren und zu aktivieren ist relativ einfach:

Benötigte Pakete installieren:

sudo apt install php-apcu redis-server php-redis

Redis fĂŒr die Verbindung via Unix-Socket konfiguruieren:

sudo su
cp /etc/redis/redis.conf /etc/redis/redis.conf.bak
sed -i "s/port 6379/port 0/" /etc/redis/redis.conf
sed -i s/\#\ unixsocket/\unixsocket/g /etc/redis/redis.conf
sed -i "s/unixsocketperm 700/unixsocketperm 770/" /etc/redis/redis.conf
sed -i "s/# maxclients 10000/maxclients 512/" /etc/redis/redis.conf
usermod -aG redis www-data
sed -i '$avm.overcommit_memory = 1' /etc/sysctl.conf

Server neustarten:

reboot now

Die config.php öffnen


sudo nano /var/www/nextcloud/config/config.php


und folgendes einfĂŒgen:

'filelocking.enabled' => true,
'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.locking' => '\\OC\\Memcache\\Redis',
array (
    'host' => '/var/run/redis/redis-server.sock',
    'port' => 0,
    'timeout' => 0.0,
  ),

Danach evtl. nochmals Redis neu starten:

sudo systemctl restart redis

Die Redis-Konfig habe ich von hier:
https://www.c-rieger.de/nextcloud-installationsanleitung/#c04

Weitere Infos und ErklÀrungen findest du hier:
https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html#additional-redis-installation-help

Ich empfehle dir auch die folgende Sektion durchzulesen, um die Performance deines Servers noch weiter zu optimieren:
https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html?highlight=php%20fpm

Ich hoffe das hilft dir erst mal weiter.

EDIT:

Redis-Konfiguration ergÀnzt.

Obacht hier! Wenn Du PHP-fpm nutzt, dann greift hier nicht die php.ini unter /etc/php/x.x/apache2, sondern die unter /etc/php/x.x/fpm. Dort mĂŒsstest Du deine Anpassungen nochmal vornehmen.

3 Likes

Jup. Guter Punkt. Das sollte er auf jeden Fall tun, falls er das nicht schon getan hat


APCu und/oder Redis muss er aber imho trotzdem noch installieren und konfigurieren. Es muss imho der OPcache und ein Memcache konfiguriert sein, wenn man keine Warnungen erhalten will. Es gibt nĂ€mlich jeweils seperate Warnungen fĂŒr das eine und das andere, wenn ich mich jetzt nicht komplett tĂ€usche. Und die Warnung die @Christofer gepostet hat betrifft die fehlende Memcache-Konfiguration und nicht eine fehlenden OPcache-Konfiguration.

Aus meiner Doku:

sed -i "s/;opcache.enable=.*/opcache.enable=1/" /etc/php/7.4/fpm/php.ini
sed -i "s/;opcache.enable_cli=.*/opcache.enable_cli=1/" /etc/php/7.4/fpm/php.ini
sed -i "s/;opcache.memory_consumption=.*/opcache.memory_consumption=128/" /etc/php/7.4/fpm/php.ini
sed -i "s/;opcache.interned_strings_buffer=.*/opcache.interned_strings_buffer=8/" /etc/php/7.4/fpm/php.ini
sed -i "s/;opcache.max_accelerated_files=.*/opcache.max_accelerated_files=10000/" /etc/php/7.4/fpm/php.ini
sed -i "s/;opcache.revalidate_freq=.*/opcache.revalidate_freq=1/" /etc/php/7.4/fpm/php.ini
sed -i "s/;opcache.save_comments=.*/opcache.save_comments=1/" /etc/php/7.4/fpm/php.ini

Moin,

danke fĂŒr den Hinweis, das nenne ich mal Support, super RĂŒckmeldungen. Eure Hilfestellungen enthalten alles was ich wissen wollte, ganz großer Dank an Beide :heart_eyes:

Die php.ini unter /etc/php/x.x/fpm hatte ich schon gesehen und die hat mich verunsichert, damit ist es klar und eigentlich auch logisch.
Das große Latenzproblem hat aber nicht der opcache gelöst, ich konnte keine schnelleren Ladezeiten feststellen, aber der APCu-Cache brachte einen deutlichen Effekt und auch den Status grĂŒn in den Einstellungen unter “Verwaltung -> Übersicht”.
Redis zickte erst noch rum, lief dann aber auch, ich musste nur den Socket Pfad aus der /etc/redis/redis.conf in der nexcloud config.conf anpassen:

‘redis’ => [
‘host’ => ‘/var/run/redis/redis-server.sock’,
‘port’ => 0,
‘dbindex’ => 0,
‘password’ => ‘secret’,
‘timeout’ => 1.5,
],

Danke schon mal. Zwei Fragen haben sich dann doch noch ergeben:

  1. Zu der APCu gibt es eine Warnung, was den Cronjob betrifft. Man soll --define apc.enable_cli=1 an den cronjob anhÀngen. Ist der folgende Eintrag damit korrekt:

crontab -u www-data -l


*/5 * * * * php -f /var/www/nextcloud/cron.php --define apc.enable_cli=1

  1. In der Anleitung Memory caching steht noch was zu “Memcached”. Der wĂ€re doch nur wichtig wenn man Nextcloud auf mehreren Servern verwendet oder?

Danke und Gruß

Christofer

Hast du das “php-apcu”-Paket installiert und die folgende Zeile in der config.php der Nextcloud hinzugefĂŒgt
?

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

Das sollte eigentlich reichen, um den lokalen Cache zu aktivieren. Einen speraten Cronjob dafĂŒr habe ich nicht aktiviert.

EDIT:
Meiner sieht so aus:
*/5 * * * * php -f /var/www/html/nextcloud/cron.php > /dev/null 2>&1

Es gibt drei Arten von memcaches:

  1. memcache.local: in meinem Beispiel mit APCu realisiert.
  2. memcache.locking: fĂŒr Transactional file locking — Nextcloud latest Administration Manual latest documentation, wird in meinem Beispiel mit Redis realisiert.
  3. memcache.distributed: kann mit Redis oder Memcached realisiert werden, brauchst du aber, wie du richtig erkannt hast, fĂŒr einen einzelnen Server nicht,

Auf einem Heimserver bringt dir vorallem der erste performancemÀssig viel. Wenn du meine Anleitung befolgt hast, ist Punkt 1. und 2. abgedeckt.

Bei der Installation der PHP-Pakete musst du allenfalls, falls du externe Quellen nutzt evtl. noch explizit die Version angeben. z.B.

sudo apt install php7.4-apcu anstatt sudo apt install php-apcu

Versuche doch mal:

nano /etc/php/7.4/apache2/php.ini

opcache.enable=1 opcache.enable_cli=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1