Jump to content

[solved] Nginx und Nextcloud - Keine Zwischenspeicherung / Buffer


MDN
Go to solution Solved by MDN,

Recommended Posts

Hi zusammen, ich habe meinen Nextcloud (Docker auf Unraid) jetzt so eingestellt, dass ich 10GB große Dateien hochladen kann.

Mein Setup ist so:

Extern: Internet -> Router -> Nginx (Docker auf Unraid) -> Nextcloud (Docker auf Unraid)

Intern: LAN -> Nextcloud (Docker auf Unraid)

 

Wenn ich von intern eine große Datei im LAN hochlade, dann sehe ich auch wie die Datei in mein eingestelltes Temp-Verzeichnis geschrieben wird.

Wenn ich von extern eine große Datei hochlade, dann geht der Upload-Balken bis 100% und bleibt dann dort stehen. Beim Upload wird die Memory Nutzung des Containers immer größer. Während der Upload-Balken auf 100% stehen bleibt, sehe ich wie die Datei mit ca. 20-30MB/Sekunde in das eingestelltes Temp-Verzeichnis geschrieben wird.

 

Der Effekt ist, dass man bei großes Dateien - für was ich Nextcloud hauptsächlich nutze - ein Mal warten muss, bis der Upload fertig ist und ein zweites Mal, wenn die Datei dann vom Nginx nach Nextcloud geschrieben wird.

 

Ich kenne mich leider mit Nginx nicht so gut aus, aber mit anderen Proxys und Reverse-Proxys. Von anderen Lösungen kenne ich es so, dass die Datenverbindung durch geht, direkt zum Zielserver. Kann ich den Nginx auch so konfigurieren, dass er nicht die Daten zwischenspeichert, sondern gleich an Nextcloud weiter gibt?

 

Danke schon im Voraus!

 

 

 

Edited by MDN
Problem solved
Link to comment
  • MDN changed the title to [solved] Nginx und Nextcloud - Keine Zwischenspeicherung / Buffer
11 hours ago, mgutt said:

Für lokal ist das aber echt lahm. Liegt appdata bei dir auf den HDDs? Weil das ist doch die Quelle dann oder?

Es ist recht langsam, aber ich mich da jetzt nicht weiter darum gekümmert.

AppDate ist Cache Only und das Temp-Verzeichnis hat auch einen SSD Cache.

Die Quelle allerdings war tatsächlich der RAM. Im Nginx Docker ist der RAM auf die Größe der Datei angeschwollen und dann beim Schreiben auf die Platte wieder kleiner geworden.

 

Wenn ich jetzt über Gigabit-LAN eine Datei hochlade, dann erreiche ich (laut Angabe im Browser) in der Spitze 28MB/s, laut Taskmanager ~200MBit/s und laut Unraid Dashboard auch ~200MBit/s. Das ist weiterhin für LAN und SSD zu langsam, aber weil ich es über ein 100MBits/40MBits Internetleitung nutze ist es klein Flaschenhals. Es ist bestimmt interessant herauszufinden, warum es nicht schneller geht - wozu ich allerdings in nächster Zeit nicht komme werde.

Link to comment
10 minutes ago, MDN said:

in der Spitze 28MB/s

Welche Pfade nutzen deine Container? /mnt/user? Du könntest mal testen auf /mnt/cache umzustellen. Allerdings müssen dafür wirklich alle appdata Dateien auf der SSD liegen und dürfen auch nicht mehr auf das Array verschoben werden. Prüfen kannst du es über Shares > rechts bei appdata das Ordner-Symbol > LOCATION.

 

Wenn die Datenbank über /mnt/cache angesprochen wird, ist das bei Nextcloud ein immenser Performance-Schub. Merkt man sofort beim Laden der GUI.

  • Thanks 1
Link to comment
On 2/15/2022 at 9:02 PM, MDN said:

Ah! Hab es selbst gefunden:

proxy_request_buffering off;

 

Das trägt man in die conf Datei des Proxy Hosts ein und schon geht es direkt zu Nextcloud.

Kann das einfach so unter advanced eingetragen werden?

image.png.3084f473eb353009ba9bf1bc38aac60a.png

 

Außerdem:

Könnte das bitte vielleicht auch in den Nextcloud Problemlösungsstrang mit einbinden oder auch reinkopieren?

Das wäre da ja auch nicht ganz verkehrt.

 

Zur Not würde ja auch eine kurze Erklärung und ein Link hierher reichen.

 

Link to comment

@MartinG : Ja, es reicht das bei Advanced einzutragen. Und ich trage es später noch in den anderen Post ein.

 

@mgutt : Bitte helf mir noch mal auf die Sprünge: Wenn ich "appdata" und "system" auf "cache only" stehen habe, ist das nicht das gleiche wie ein direkter Verweis auf den Cache? Wenn ich in der Spalte "size" auf "compute" gehe, dann sehe ich, dass appdata komplett auf der SSD liegt.
Allerdings nehme ich nicht an, dass an den Platten bzw. SSD liegt. Wie man auf dem angehängten Screenshot sieht wurde die 800MB Datei in den Speicher vom Nginx Container geladen. Plattenaktivität gab es zur gleichen Zeit nicht.

grafik.png.2b101a0ca054651df9a9dd1dc7078899.png

 

Link to comment
1 hour ago, MDN said:

Wenn ich "appdata" und "system" auf "cache only" stehen habe, ist das nicht das gleiche wie ein direkter Verweis auf den Cache?

Vorab: Wenn du appdata auf Cache Prefer hattest und auf Cache Only umstellst, kann es sein, dass du dir sofort Container zerschießt. Da Cache Prefer auf /mnt/cache und /mnt/diskX zugreift, während Cache only nur auf /mnt/cache zugreift. Es kann nämlich immer mal sein, dass Dateien auf dem Array festhängen.

 

Und nein, Cache only und den Pfad /mnt/user zu verwenden, ist nicht mal ansatzweise so performant wie direkt den Poolpfad /mnt/cache zu verwenden. Ersteres geht einen Umweg über FUSE (sshfs).

 

1 hour ago, MDN said:

Wenn ich in der Spalte "size" auf "compute" gehe

Brauchst du nicht. Einfach den Ordner anklicken und die Spalte LOCATION prüfen. Das zeigt das sofort an.

Link to comment
1 hour ago, mgutt said:

Vorab: Wenn du appdata auf Cache Prefer hattest und auf Cache Only umstellst, kann es sein, dass du dir sofort Container zerschießt. Da Cache Prefer auf /mnt/cache und /mnt/diskX zugreift, während Cache only nur auf /mnt/cache zugreift. Es kann nämlich immer mal sein, dass Dateien auf dem Array festhängen.

Gut(t)er Hinweis. Passiert das auch, wenn man vorher alle Container (und ggf. VMs) stoppt?

 

1 hour ago, mgutt said:

Und nein, Cache only und den Pfad /mnt/user zu verwenden, ist nicht mal ansatzweise so performant wie direkt den Poolpfad /mnt/cache zu verwenden. Ersteres geht einen Umweg über FUSE (sshfs).

Ergibt Sinn. Ich werde das mal umstellen, sobald meine neuen Cache SSDs gekommen sind.

Link to comment
43 minutes ago, MDN said:

Passiert das auch, wenn man vorher alle Container (und ggf. VMs) stoppt?

Bei appdata nein, bei system ja. Dafür müsste erst der Docker Dienst auf Nein gestellt werden, ansonsten verschiebt der Mover nicht das docker.img

 

Deswegen immer erst auf LOCATION schauen. Erst wenn alles verschoben ist, darf man dann die Cache Einstellung ändern. Und klar, niemals während die Container gerade laufen.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...