Nextcloud a way too slow

  • Hey,


    meine aktuell installierte Nextcloud Instanz ist viel zu langsam. Klar nextcloud + php sind keine performance Wunder, dennoch müsste es wesentlich agiler laufen...

    Selbst bei einer frisch installierten Instanz und nur einem registrierten Benutzer dauert der Seitenaufbau durchweg 2-3 Sekunden. Ohne es genau zu wissen, habe ich die Datenbank als Flaschenhals in Vermutung.


    Anfangs lief das ganze noch auf einem RS1000. Mittlerweile habe ich die Dienste aber auf 2 Server wie folgt aufgeteilt:



    Frontend: (RS4000 G9.5, ubuntu 22.04, 10c, 32gb, 2TB SSD)

    - nginx 1.25.2

    - php8.2-fpm (memcache, jiit, opcache aktiviert)

    - redis 6.0.16

    - elasticsearch 8.6.1

    - letsencrypt (acme.sh latest)

    - nextcloud 27.1.1



    backend: (RS 1000 G9.5, debian 12, 4c, 8gb, 320GB SSD)

    - mariadb 11.1.2-MariaDB-1:11.1.2+maria~deb12

    - stun/turn server 4.6.1



    Die Server sind untereinander mit dem cloud vlan 100mbit/s verbunden (~0.439ms). Alternativ habe ich tailscale ausprobiert (~1.2ms).


    Falls ihr Tipps habt wie ich Nextcloud beschleunigen könnte, immer her damit!

  • Selbst bei einer frisch installierten Instanz und nur einem registrierten Benutzer dauert der Seitenaufbau durchweg 2-3 Sekunden.

    Das kenne ich so auch und habe da bisher auch noch keine richtige Lösung gefunden.


    Die Datenbank nicht auf dem selben Host zu haben, könnte in jedem Falle ein ordentlicher Flaschenhals sein. Auch wenn die Latency recht gering ist.


    Wie sind nginx und fpm verbunden? TCP auf Localhost oder per Unix Socket? Ersteres könnte ein Bottleneck sein.

    "Denn der radikalste Zweifel ist der Vater der Erkenntnis."

    -Max Weber

  • 100 GB OPCache könnte was bringen.Konnte es aber mangels RAM noch nicht probieren.... Im Ernst, also 2-3 Sekunden habe ich bei einem Benutzer auch. Mit Apache, ohne sonstigen Cache außer OPCache. Wenn das bei euch trotz aller Caches und nginx auch so ist, dann wird das wohl der Normalzustand sein ;) .


    Edit: OK, gelogen, APCu ist verfügbar und als lokaler Memcache eingestellt.

  • Die Datenbank nicht auf dem selben Host zu haben, könnte in jedem Falle ein ordentlicher Flaschenhals sein. Auch wenn die Latency recht gering ist.

    Stimmt, das habe ich mit der aktuellen Konfiguration noch gar nicht getestet. Im Netz findet man mehrere Beiträge die bei kleinen Servern zu einer Auslagerung der Datenbank raten. Da das ganze jetzt aber auf einem RS4000 läuft sollte das keine Rolle mehr spielen.


    Wie sind nginx und fpm verbunden? TCP auf Localhost oder per Unix Socket? Ersteres könnte ein Bottleneck sein.

    per socket angebunden.


    100 GB OPCache könnte was bringen.Konnte es aber mangels RAM noch nicht probieren.... Im Ernst, also 2-3 Sekunden habe ich bei einem Benutzer auch. Mit Apache, ohne sonstigen Cache außer OPCache. Wenn das bei euch trotz aller Caches und nginx auch so ist, dann wird das wohl der Normalzustand sein ;) .


    Edit: OK, gelogen, APCu ist verfügbar und als lokaler Memcache eingestellt.

    memcache, apcu (opcache) , jiit, redis ist alles aktiv & konfiguriert.

  • Stimmt, das habe ich mit der aktuellen Konfiguration noch gar nicht getestet. Im Netz findet man mehrere Beiträge die bei kleinen Servern zu einer Auslagerung der Datenbank raten. Da das ganze jetzt aber auf einem RS4000 läuft sollte das keine Rolle mehr spielen.


    per socket angebunden.


    memcache, apcu (opcache) , jiit, redis ist alles aktiv & konfiguriert.

    Hmm, ja, dann wird es wohl wirklich normal sein. Ich habe heute Nacht einige Stunden mit den OPCache Einstellungen rumgespielt, weil ich per Google darauf gekommen bin, dass OPCache ja auch dateibasiert funktionieren kann. Nach einigem rumspielen mit den Parametern bei aktiver Nextcloud hatte ich dann auch zuerst gut 120 MB Cache-Dateien in meinem konfigurierten Verzeichnis für OPCache und Nextcloud hat aber trotzdem weiter gejammert, dass der - ebenfalls noch aktivierte - OPCache im Shared Memory fast voll sei. Habe den auch mal ausgeschaltet, dann war die Meldung weg, dafür hat sich Nextcloud dann darüber beschwert, dass er ausgeschaltet ist und das nicht gut sei. Also wieder angeschaltet und nach einigen weiteren Versuchen war ich dann soweit, dass die Nextcloud beim Klick auf Kontakte die Kontakte zu laden versucht hat bis zum St.Nimmerleinstag. Nur noch leere Anzeige und der animierte Kreis. Alle anderen Apps schienen aber noch zu funktionieren.


    Das war dann nach einigen erfolglosen Reparaturversuchen der Moment, in dem ich dann das Backup der Nextcloud wieder eingespielt habe aus meiner täglichen Sicherung der Serverdaten per Keyhelp/restic. Zuerst nur die Datenbank, das führte aber wohl zu Inkonsistenzen und einem Internal Server Error. Dann alles komplett, inklusive Dateien, das hat dann auch geklappt und so bin ich dann um 6 Uhr schlafen gegangen :rolleyes: . Ich werde mich wohl weiterhin mit den 2-3 Sekunden abfinden und mit der ewigen Meckerei. Ich bin ja schon froh, dass die Cloud überhaupt wieder läuft und die Kontakte wieder da sind.

    Zitat

    Der OPcache-Puffer ist fast voll. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, opcache.memory_consumption in deiner PHP-Konfiguration mit einem höheren Wert als 2048 anzuwenden.

    Der OPcache-Zwischenspeicher für interne Zeichenfolgen ist fast voll. Um sicherzustellen, dass sich wiederholende Zeichenfolgen effektiv zwischengespeichert werden können, wird empfohlen, opcache.interned_strings_buffer mit einem Wert größer als 128 in deiner PHP-Konfiguration anzuwenden.

    Redis wird sich wahrscheinlich bei einer neuen Installation mit nur einem Benutzer nur wenig bis gar nicht auswirken.

  • Wollte solchen Terz nicht, daher habe ich mir den Storage Share (= gehostetes Nextcloud) vom roten H geholt.


    Aber vermutlich soll das eine größere Installation werden? Für eine Person wären die beiden RS zumindest sauber überdimensioniert.

    RS Ostern L OST22 (~RS "3000" G9.5) (8C,24GB,960GB) | RS Cyber Quack (1C,2GB,40GB)

    Einmal editiert, zuletzt von TBT ()

  • Super mega schnell ist meine Nextcloud auch nicht; aber 2-3 sek. Braucht sie nicht.

    Hast du sie unter Ubuntu als Snap installiert?

    Die DB würde ich auf dem selben Server lassen, zumindest zum Testen.


    Wir sind die generellen Zugriffszeten auf dem Host? Evt. Liegt da das Problem?

  • Super mega schnell ist meine Nextcloud auch nicht; aber 2-3 sek. Braucht sie nicht.

    Bei mir kommt es darauf an. Wechsle ich die App innerhalb von Nextcloud, also zum Beispiel von Photos auf Files, braucht der App wechsel seine zwei bis drei Sekunden. Aber wenn ich z.B. innerhalb der Files rumstöbere, geht das bei mir schnell. Und meine Cloud läuft mit 2 vCPU und lediglich 1 GB RAM.

    [RS] 2000 G9 | Cyber Quack

    [VPS] 2000 ARM G11 | 1000 G9 | 200 G8 | Secret | A | mikro G11s | 4x nano G11s
    [WH] 8000 SE | 4000 SE | 2000 SE

  • Ist bei mir ähnlich, besonders der Wechsel auf Files braucht etwas länger als z.B. auf Kontakte. Von Photo auf Files sieht das dann laut Firefox z.B. so aus:

    Code
    DOMContentLoaded: 217 ms
    load: 2,61 s

    Der vServer hat zwar 6 vCores und 16 GB RAM, aber das dürfte hierbei ja nicht relevant sein, weil er zur Erzeugung des HTML wohl nur eine vCPU benutzen wird und bei dir das RAM zur Bearbeitung des Requests ausreicht.

  • So, ich hab nun den db server (mariadb 10.6 (von nc empfohlen)) direkt auf den nextcloud host umgezogen. Absolut keine Veränderung -.-


    Da ich zuvor schon das halbe Internet nach performance/tuning Tips in Sachen php/mysql/cache & nextcloud selbst durchforstet habe, viele Sachen wirklich granular angepasst habe, keine positiven Effekte erzieht habe, ne menge Frust gehabt habe ( :rolleyes: ) Schiebe ich nun das Problem schlichtweg auf Nextcloud und gut ist....


    Kennt Ihr ownCloud Infinite Scale? Dies ist soll nahezu komplett in go geschrieben sein und fucking pfeilschnell sein. Aber wie stehts um die Apps & Anpassbarkeit wie bei nextcloud? Wäre ein Wechsel sinnvoll?


    edit:

    Kann es eventuell an den DNS Resolver Einstellungen vom Server selbst liegen? Das diese zu langsam auflösen oder anderweitige Konflikte auftreten? Hier im Forum liest man ja häufiger, dass die von netcup hinterlegten Standard DNS Resolver Probleme bereiten sollen....

  • Kennt Ihr ownCloud Infinite Scale? Dies ist soll nahezu komplett in go geschrieben sein und fucking pfeilschnell sein. Aber wie stehts um die Apps & Anpassbarkeit wie bei nextcloud? Wäre ein Wechsel sinnvoll?

    ownCloud Infinite Scale sieht wirklich gut aus. Das ist aber wirklich nur ein reiner Filestorage. Keine Kontakte, keine Kalender, keine Apps. Das hat mich von einem Wechsel bisher immer abgehalten, auch wenn ich an dieser Stelle zustimmen muss, dass Nextcloud einfach furchtbar langsam ist. Ich habe auch schon so viel versucht, mehrere Server Wechsel hinter mir und am Ende einfach aufgegeben.

  • Hm, das rote H bekommts mit seiner gehosteten Version sehr zügig hin. Da ist nichts von den 2-3 Sekunden merkbar.

    RS Ostern L OST22 (~RS "3000" G9.5) (8C,24GB,960GB) | RS Cyber Quack (1C,2GB,40GB)

  • Hm, das rote H bekommts mit seiner gehosteten Version sehr zügig hin. Da ist nichts von den 2-3 Sekunden merkbar.

    Ob die mir wohl ihre Konfiguration zur Verfügung stellen? 8o


    Es gibt ja in der H Console das fertige nextcloud Image aber das wird wohl nicht 1:1 das sein was sie für ihre storage Produkte nutzen.....


    TBT ist die gehostete nextcloud genauso frei konfigurierbar als wenn man sie selbst hosten würde?

  • TBT ist die gehostete nextcloud genauso frei konfigurierbar als wenn man sie selbst hosten würde?

    Was genau meinst Du mit "frei konfigurierbar". Es gibt keine Konsole, auf der man was ändern könnte, sondern einen NC Login. Man kann beliebig viele Benutzer und beliebige Plugins installieren - sofern diese halt nicht eine separate Konsoleninstallation eines Bestandteils benötigen.


    Man kann beim Setup eine Custom URL (z.B. nextcloud.eigenedomain.tld ) angeben, die dann ohne jeglichen Aufwand verwendet wird. Externer Speicher kann mit dem Plugin eingebunden werden, so auch z.B. die parallel angebotene "Storage Box" (habe ich auch, die kleinste), die man z.B. auch für Backups von Netcup aus verwenden kann.


    Ich finde beide Angebote schon sehr angenehm und performant. Nextcloud als Container hinter nem Nginx Proxy Manager habe ich bisher nicht wirklich zum Funktionieren gebracht (wenn da jemand ne passende docker-compose hat nur her damit), daher halt die "plug and play" Variante.

    RS Ostern L OST22 (~RS "3000" G9.5) (8C,24GB,960GB) | RS Cyber Quack (1C,2GB,40GB)

  • Also mein Nextcloud auf meinem RS reagiert sehr flott, da ist auch nichts mit 2-3 Sekunden Verzögerung. Ihr müsst auch die PHP-FPM Konfiguration anpassen, denn die Standard Werte sind für'n Arsch. Gleichzeitig müsst ihr auch die Backend-DB anpassen, dann passt es auch mit der Performance.

    Hier (Link) zum Beispiel könnt ihr euch wunderbar an der Konfiguration orientieren. https://www.c-rieger.de/nextcloud-installationsanleitung/

  • Was genau meinst Du mit "frei konfigurierbar". Es gibt keine Konsole, auf der man was ändern könnte, sondern einen NC Login. Man kann beliebig viele Benutzer und beliebige Plugins installieren - sofern diese halt nicht eine separate Konsoleninstallation eines Bestandteils benötigen.


    Man kann beim Setup eine Custom URL (z.B. nextcloud.eigenedomain.tld ) angeben, die dann ohne jeglichen Aufwand verwendet wird. Externer Speicher kann mit dem Plugin eingebunden werden, so auch z.B. die parallel angebotene "Storage Box" (habe ich auch, die kleinste), die man z.B. auch für Backups von Netcup aus verwenden kann.


    Ich finde beide Angebote schon sehr angenehm und performant. Nextcloud als Container hinter nem Nginx Proxy Manager habe ich bisher nicht wirklich zum Funktionieren gebracht (wenn da jemand ne passende docker-compose hat nur her damit), daher halt die "plug and play" Variante.

    Ich muss deren Angebot definitiv mal testen. Die Preis/Leistung scheint ja wirklich zustimmen und wenn die Performance wirklich besser ist, ist ein Umzug sicherlich eine Überlegung Wert.

    Also mein Nextcloud auf meinem RS reagiert sehr flott, da ist auch nichts mit 2-3 Sekunden Verzögerung. Ihr müsst auch die PHP-FPM Konfiguration anpassen, denn die Standard Werte sind für'n Arsch. Gleichzeitig müsst ihr auch die Backend-DB anpassen, dann passt es auch mit der Performance.

    Hier (Link) zum Beispiel könnt ihr euch wunderbar an der Konfiguration orientieren. https://www.c-rieger.de/nextcloud-installationsanleitung/

    Magst du uns deine DB/php configs preisgeben? Denn die c-rieger sowie die performance/tuning docs von nc selbst & dutzende weitere Internetseiten habe ich alle durchgearbeitet aber egal was ich mache, die 2-3 sek bleiben.


    Hat du ne größere Instanz mit mehreren Apps oder nutzt du deine nextcloud rein als Datenablage?

  • Hier (Link) zum Beispiel könnt ihr euch wunderbar an der Konfiguration orientieren. https://www.c-rieger.de/nextcloud-installationsanleitung/

    Zitat
    Code
    sed -i 's/pm.max_children =.*/pm.max_children = 200/' /etc/php/8.2/fpm/pool.d/www.conf
    sed -i 's/pm.start_servers =.*/pm.start_servers = 100/' /etc/php/8.2/fpm/pool.d/www.conf
    sed -i 's/pm.min_spare_servers =.*/pm.min_spare_servers = 60/' /etc/php/8.2/fpm/pool.d/www.conf
    sed -i 's/pm.max_spare_servers =.*/pm.max_spare_servers = 140/' /etc/php/8.2/fpm/pool.d/www.conf
    sed -i "s/;pm.max_requests =.*/pm.max_requests = 1000/" /etc/php/8.2/fpm/pool.d/www.conf

    Also eigentlich sollte man pro FPM Server das memory_limit an RAM vorhalten. Also kurz gesagt, sollte man nach der Anleitung ~200GiB RAM nur für die PHP Worker vorhalten. Macht man das nicht, kann es im Zweifel zu OOM Kills kommen. Auf einem System von mir mit 64GiB RAM erlaube ich bei 512MB memory_limit max. 94 FPM Server.


    Solange die PHP Worker/Prozesse alle nur wenig Memory brauchen, mag das funktionieren. Aber ich weiß nicht, inwiefern es sinnvoll ist, da derart heftig overprovisioning zu betreiben.

    "Denn der radikalste Zweifel ist der Vater der Erkenntnis."

    -Max Weber

    Einmal editiert, zuletzt von whoami0501 ()

    Gefällt mir 3
  • Auf einem System von mir mit 64GiB RAM erlaube ich bei 512MB memory_limit max. 94 FPM Server.

    Auf meinem 64 GB Server habe ich das von "dynamic" auf "static" umgestellt, mit pm.max_children = 150 (bei memory_limit 256)

    Läuft alles wunderbar rund und schnell.

    (Ist zwar kein nextcloud drauf, aber etliche php-Intensive Anwendungen, u.a. Moodle mit recht vielen Nutzern)


    Wenn ich das Skript im verlinkten Artikel nutze, gibt es mir (auf dem 64GB Server) aus: pm.max_children = 1094

    way too much

    So was kann eigentlich nicht gutgehen.

  • Auf meinem 64 GB Server habe ich das von "dynamic" auf "static" umgestellt, mit pm.max_children = 150 (bei memory_limit 256)

    Läuft alles wunderbar rund und schnell.

    Weil das impliziert, dass du maximal 37,5GiB brauchst, welche du mit 64GiB ja locker hast. :)

    "Denn der radikalste Zweifel ist der Vater der Erkenntnis."

    -Max Weber