Massives Performance Problem mit Python / Seafile Server

Rosendoktor

Well-Known Member
Hallo zusammen!

hat hier jemand von Euch einen Seafile Server (zur Dateisynchronisation) auf FreeBSD am Laufen?

Nachdem ich seit Jahren einen Seafile Server unter Debian betreibe, hab' ich die Tage mal einen weiteren Seafile Server unter FreeBSD installiert, da auf dem Gerät noch viel ungenutzter Speicher zur Verfügung steht.

Installiert wurde das Ganze aus dem Repository. Nach dem ersten Konfigurieren lief der Seafile Server auch.

Aber sowas von grottenlahm, dass das so schlicht nicht brauchbar war.

Erster Performancevergleich: Vom Anmelden auf der Loginseite des Webinterfaces (der Webserver heisst seahub) bis zu vollständig aufgebauten "Home" Seite: Debian 1 Sekunde, FreeBSD 29 Sekunden. :ugly:

Während der Wartezeit waren ein bis drei Python Prozesse mit 98% bis 100% CPU Auslastung aktiv. Bei jedem Klick im Webinterface das gleiche, mehrere Python Prozesse (bis zu vier), und unter Debian zack wie nix, unter FreeBSD schnarch...

Also, mal geschaut... Der FreeBSD Port ist nicht ganz sauber, damit es lief musste manuell ein Softlink innerhalb des Seafile Installation (/usr/local/www/haiwen/...) auf /usr/local/bin/gunicorn gesetzt werden. Zudem waren die Rechte der meisten Dateien/Verzeichnisse auf "root:seafile" und "rwxr.xr.x" gesetzt, was den unter "seafile:seafile" laufenden Python Prozess daran gehindert hat, seine pycache Verzeichnisse für vorkompilierten Bytecode (oder so, bin kein Python Experte) anzulegen.

Also die Rechte der gesamten Installation auf "seafile:seafile" gesetzt. Danach dauerte das Anmelden "nur" noch 9 Sekunden, es wurden pycache Verzeichnisse mit *.pyc Inhalten erzeugt, und es waren wieder bis zu drei Python Prozesse mit voller CPU Auslastung aktiv. Aber immer noch viel zu lahm bei jeder Navigation im Webinterface.

Als nächstes wie empfohlen das Caching für den seahub Webserver aktiviert, man kann entweder dateibasiertes Caching (/tmp/seahub_cache) oder besser memcached nutzen. Beides funktioniert, es werden Daten unter /tmp/seahub_cache abgelegt bzw. es findet Kommunikation (per tcpdump sichtbar) zuwischen seahub und memcached statt.

An der Performance hat sich dadurch aber rein gar nichts gebessert...

Woran kann es denn noch liegen, dass Python unter FreeBSD beim Aufbau einer sehr einfachen Webseite im Vergleich zu einer Installation auf Debian um den Faktor 10 langsamer ist?

Gibt es irgendwelche bekannten Flaschenhälse oder so? Was könnte ich noch prüfen?

Grüße,

Robert

EDIT: Hab auch schon probeweise ASLR und W^X abgeschaltet, bringt auch nix...
 
Zuletzt bearbeitet:
So, Problem gelöst. Für den unwahrscheinlichen Fall dass jemand das gleiche Problem irgendwann mal haben sollte:

Der vom Webinterface des Seafile Servers verwendete Applikationsserver gunicorn wird in FreeBSD nur mit der Standard worker class "sync" compiliert. Wenn man ihn aus den Ports selbst baut und die asynchronen worker classes in der config aktiviert, kann man einen dieser (z.B. "gevent") für den Seafille Server verwenden und nun flutscht es... :) Das war dann meine heutige Nachtschicht...
 
Öhmmm ... ich nutze Seafile seit gefühlten Ewigkeiten exklusiv unter FreeBSD auf drei Maschinen. Alles per pkg installiert und der erste Seitenaufruf ist ca. zwei sec, der Login dauert vielleicht drei, aber das war es auch schon.
 
Ich nutze ebenfalls Seafile unter FreeBSD seit einer Ewigkeit. Seit ich Seafile von 9.0 auf 11.0 aktualisiert habe, ist das Webinterface irgendwie richtig langsam geworden. Zuvor war es so richtig schnell.
 
Code:
# pkg info | grep  sea
libsearpc-3.2.0_2,1            Simple RPC framework based on GObject System in C
py39-seafdav-11.0.5            Python library for accessing seafile data model
py39-seafobj-11.0.5            Python library for accessing seafile data model
seafile-server-11.0.2          Open Source Cloud Storage (Server)
seahub-11.0.2                  Web frontend for Seafile

Falls das wem hilft. Wenn wer noch mehr wissen will, such ich Euch das gerne auf Anfrage raus.
Läuft meinem Gefühl nach alles wie immer.
 
Das sieht bei mir genau so aus:

Code:
 pkg info | grep sea
-bash:  grep: Kommando nicht gefunden.
ihsan@dognsv06:~$ pkg info | grep sea
libsearpc-3.2.0_2,1            Simple RPC framework based on GObject System in C
py39-seafdav-11.0.5            Python library for accessing seafile data model
py39-seafobj-11.0.5            Python library for accessing seafile data model
seafile-server-11.0.5          Open Source Cloud Storage (Server)
seahub-11.0.5_2                Web frontend for Seafile

Problem ist ja, dass es mit 9.0 rasend schnell war und ich jetzt auf jeden Klick im Webinterface 1-2 Sekunden warte. Betroffen ist nur das Webinterface Seahub.
 
Code:
# freebsd-version
14.0-RELEASE-p6

Aber das erklärt dann vielleicht den Versionsunsterschied?

pkg upgrade bietet mir auch nichts höheres an.
 
Cameron hat ja selbst gebaut und ich habe einfach nur die Standardpakete genommen, die FreeBSD 14 anbietet.
 
Zurück
Oben