Nextcloud Optimierungen für Synology Installation

Crashandy

Benutzer
Mitglied seit
14. Mai 2014
Beiträge
293
Punkte für Reaktionen
100
Punkte
43
Meine Einstellungen im PHP 8.0 Profil für Nextcloud, bei vorhandenem RAM von 32 GB.

PHP-Cache aktivieren

Erweiterungen aktiviert:
bcmath, bz2, curl, exif, ftp, gd, gettext, gmp, iconv, imagick, intl, ldap, mysqli, openssl, pdo_mysql, posix, soap, sockets, sodium, ssh2, zip, zlib

Erweiterte Einstellungen -> Kern
Name
memory_limit
post_max_size
upload_max_filesize
upload_tmp_dir
apc.enable_cli
apc.shm_size
apc.ttl
opcache.enable_cli
opcache.file_cache
opcache.interned_strings_buffer
opcache.memory_consumption
opcache.revalidate_freq
output_buffering
max_execution_time
max_input_time
Wert (Standardwert -> mein Wert)
128M -> 4G
32M -> 8G
32M -> 8G
/var/services/tmp -> /volume1/Cloud-Daten/nextcloud/data/upload-tmp
0 -> 1
32M -> 512M
0 -> 7200
0 -> 1
"" -> /volume1/web/.opcache
8 -> 32
128 -> 512
2 -> 60
4096 -> 0
240 -> 3600
60 -> 3600

Erweiterte Einstellungen -> FPM
FPM-Modus:
Max. Prozesse:
Kindprozesse bei Start:
Mindestanzahl Prozesse:
Maximalanzahl Prozesse:
Dynamisch
120
12
6
18
 

Tuxnet

Benutzer
Mitglied seit
02. Jan 2019
Beiträge
618
Punkte für Reaktionen
74
Punkte
48
Guten Morgen,
du hast aber nichts per ssh geändert ?
 

Crashandy

Benutzer
Mitglied seit
14. Mai 2014
Beiträge
293
Punkte für Reaktionen
100
Punkte
43
Guten Morgen @Tuxnet,

so richtig verstehe ich Deine Frage nicht. Was soll ich geändert haben? Jedenfalls nichts im Zusammenhang mit PHP 8.0.

Bei der Einrichtung der Nextcloud vor langer Zeit habe ich noch eine benutzerdefinierte "user_settings.ini" angelegt.
/usr/local/etc/php74/cli/conf.d/user_settings.ini

Inhalt in dieser Datei:

Code:
extension = apcu.so
extension = imagick.so
extension = redis.so

[core]
memory_limit = 512M
upload_max_filesize = 512M
post_max_size = 512M

[apc]
apc.shm_size = 512M
apc.enable_cli = 1

Kann eventuell diese Änderung gemeint sein?
Dies müsste wohl auch noch für die PHP 8.0 erfolgen.

Gruß
Crashandy
 

Crashandy

Benutzer
Mitglied seit
14. Mai 2014
Beiträge
293
Punkte für Reaktionen
100
Punkte
43
Betreffend der Redis-Installation habe ich hier noch etwas zusammengetragen.

Im Docker -> Redis-Terminal -> Erstellen -> bash die folgenden Eingaben:

Code:
root@Redis:/data# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set test "OK!"
OK
127.0.0.1:6379> get test
"OK!"
127.0.0.1:6379>

Dort ist also alles in Ordnung.

Im Terminal vom NAS (SSH-Zugang) die folgenden Befehle abgesetzt:

Redis im Docker ist aktiviert
Code:
root@MEIN-NAS-SERVER:~# curl localhost:6379
curl: (52) Empty reply from server

Redis im Docker ist deaktiviert
Code:
root@MEIN-NAS-SERVER:~# curl localhost:6379
curl: (7) Failed to connect to localhost port 6379: Connection refused

Von hieraus ist also auch alles in Ordnung.

Einstellungen in der config.php von Nextcloud:

Code:
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' =>
  array (
    'host' => 'localhost',
    'port' => 6379,
    'timeout' => 0.0,
    'read_timeout' => 0.0,
  ),

Hier ist eigentlich auch alles richtig hinterlegt.

Ob ich nun Redis im Docker aktiviere oder deaktiviere, ich kann einfach keinen Unterschied erkennen.

Wie kann man nun testen, ob das File-Locking mit Redis richtig funktioniert?
Kann mir da Jemand helfen?
 

Tuxnet

Benutzer
Mitglied seit
02. Jan 2019
Beiträge
618
Punkte für Reaktionen
74
Punkte
48
Ja, genau…. sowas zum Beispiel.

Die Datei habe ich bereits unter
/usr/local/etc/php80/cli/conf.d/user_settings.ini
erstellt.

Sonst noch eine Datei erstellt oder editiert ?
 

Tuxnet

Benutzer
Mitglied seit
02. Jan 2019
Beiträge
618
Punkte für Reaktionen
74
Punkte
48
Also wenn du den Docker mit dem Redis-Server deaktivierst und nextcloud noch funktioniert, dann greift deine NC nicht auf Redis zu,zumindest bei mir.

Sobald ich den Redis-Server deaktiviere, funktioniert nextcloud auch nicht unter php74


Hier mal ein Anzug meiner conf

'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'filelocking.enabled' => true,
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => '127.0.0.1',
'port' => '6379',
'timeout' => '0',
'dbindex' => '0',
),
 

Anhänge

  • 60782B9A-7B5C-4579-8A4F-7C99ED1E4FA6.jpeg
    60782B9A-7B5C-4579-8A4F-7C99ED1E4FA6.jpeg
    31,2 KB · Aufrufe: 19
Zuletzt bearbeitet:

Crashandy

Benutzer
Mitglied seit
14. Mai 2014
Beiträge
293
Punkte für Reaktionen
100
Punkte
43
Sowie ich die folgende Zeile einfüge, geht gar nichts mehr, weder mit noch ohne Redis.
'memcache.distributed' => '\\OC\\Memcache\\Redis',

Die Funktion von Redis mit File-Locking konnte ich nachvollziehen, indem ich die cron.php ausgeführt habe.

Fehler bei deaktiviertem Redis:
Code:
root@MEIN-NAS-SERVER:~# sudo -u http php80 /volume1/web/nextcloud/cron.php
RedisException: Connection refused in /volume1/web/nextcloud/lib/private/RedisFactory.php:132
Stack trace:
#0 /volume1/web/nextcloud/lib/private/RedisFactory.php(132): Redis->pconnect('localhost', '6379', '0', NULL, 0, '0')
#1 /volume1/web/nextcloud/lib/private/RedisFactory.php(172): OC\RedisFactory->create()
#2 /volume1/web/nextcloud/lib/private/Memcache/Redis.php(46): OC\RedisFactory->getInstance()
#3 /volume1/web/nextcloud/lib/private/Memcache/Factory.php(120): OC\Memcache\Redis->__construct('016618579b08b21...', '')
#4 /volume1/web/nextcloud/lib/private/Server.php(1080): OC\Memcache\Factory->createLocking('lock')
#5 /volume1/web/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(160): OC\Server->OC\{closure}(Object(OC\Server))
#6 /volume1/web/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container))
#7 /volume1/web/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(127): Pimple\Container->offsetGet('OCP\\Lock\\ILocki...')
#8 /volume1/web/nextcloud/lib/private/ServerContainer.php(136): OC\AppFramework\Utility\SimpleContainer->query('OCP\\Lock\\ILocki...', false)
#9 /volume1/web/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query('OCP\\Lock\\ILocki...')
#10 /volume1/web/nextcloud/lib/private/Server.php(2040): OC\AppFramework\Utility\SimpleContainer->get('OCP\\Lock\\ILocki...')
#11 /volume1/web/nextcloud/lib/private/Files/View.php(118): OC\Server->getLockingProvider()
#12 /volume1/web/nextcloud/lib/private/Server.php(439): OC\Files\View->__construct()
#13 /volume1/web/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(160): OC\Server->OC\{closure}(Object(OC\Server))
#14 /volume1/web/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container))
#15 /volume1/web/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(127): Pimple\Container->offsetGet('OC\\Files\\Node\\H...')
#16 /volume1/web/nextcloud/lib/private/ServerContainer.php(136): OC\AppFramework\Utility\SimpleContainer->query('OC\\Files\\Node\\H...', false)
#17 /volume1/web/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query('OC\\Files\\Node\\H...')
#18 /volume1/web/nextcloud/lib/private/Server.php(1403): OC\AppFramework\Utility\SimpleContainer->get('OC\\Files\\Node\\H...')
#19 /volume1/web/nextcloud/lib/base.php(594): OC\Server->boot()
#20 /volume1/web/nextcloud/lib/base.php(1087): OC::init()
#21 /volume1/web/nextcloud/cron.php(43): require_once('/volume1/web/ne...')
#22 {main}
root@MEIN-NAS-SERVER:~#

Bei aktiviertem Redis läuft der Cron-Job ohne Fehler durch.

Anmerkung aus dem Admin-Manual:
APCu ist beim lokalen Caching schneller als Redis. Wenn Sie über genügend Arbeitsspeicher verfügen, verwenden Sie APCu für Memory Caching und Redis für File Locking. Wenn Sie wenig Arbeitsspeicher haben, verwenden Sie Redis für beide.
Da ich also viel Arbeitsspeicher habe, benötige ich die Zeile "'memcache.distributed' => '\\OC\\Memcache\\Redis'," eigentlich gar nicht.
 

Tuxnet

Benutzer
Mitglied seit
02. Jan 2019
Beiträge
618
Punkte für Reaktionen
74
Punkte
48
hast du den die gleiche Fehlermeldung wie ich, wenn du Zeile eingefügt hast ?
 

Crashandy

Benutzer
Mitglied seit
14. Mai 2014
Beiträge
293
Punkte für Reaktionen
100
Punkte
43
Ja, die Meldung ist mit Deiner identisch.
Wenn ich diese Zeile mit # auskommentiere, dann läuft die Nextcloud nach einem kurzen Moment wieder.
 

Tuxnet

Benutzer
Mitglied seit
02. Jan 2019
Beiträge
618
Punkte für Reaktionen
74
Punkte
48
hmmmmm, bist du sicher das deine NC auf den Redis-Server zugreift ?
 

Crashandy

Benutzer
Mitglied seit
14. Mai 2014
Beiträge
293
Punkte für Reaktionen
100
Punkte
43
Sicher ist man sich nie, aber ein deutliches Indiz sagt doch das im Beitrag #67 geschilderte Verhalten aus.
 

Tuxnet

Benutzer
Mitglied seit
02. Jan 2019
Beiträge
618
Punkte für Reaktionen
74
Punkte
48
Wenn du die Zeile einfügst, und auf php74 gehst,sollte aber die nextcloud ohne Probleme laufen ( mit Redis ).

Teste das mal bitte,
wenn sie läuft ist was bei php8 krum.
 

Crashandy

Benutzer
Mitglied seit
14. Mai 2014
Beiträge
293
Punkte für Reaktionen
100
Punkte
43
Habe mit PHP 7.4 getestet und es ist genau das gleiche Problem. Das habe ich damals schon nicht mit der Zeile 'memcache.distributed' => '\\OC\\Memcache\\Redis', nicht hinbekommen.

Internal Server Error

The server encountered an internal error and was unable to complete your request.
Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.
More details can be found in the server log.
Von welcher Server Log wird hier eigentlich geredet? In der Nextcloud Protokollierung stehrt nichts drin.
 

Tuxnet

Benutzer
Mitglied seit
02. Jan 2019
Beiträge
618
Punkte für Reaktionen
74
Punkte
48
Das stimmt, da die NC nicht startet kann sie nix in den log schreiben. Ich muss mich mal am Wochenende damit auseinandersetzen.
 

Tuxnet

Benutzer
Mitglied seit
02. Jan 2019
Beiträge
618
Punkte für Reaktionen
74
Punkte
48

Anhänge

  • 10B86F0A-A728-446D-B502-D02B93834AD2.jpeg
    10B86F0A-A728-446D-B502-D02B93834AD2.jpeg
    132,2 KB · Aufrufe: 22
Zuletzt bearbeitet:
  • Like
Reaktionen: Crashandy

Crashandy

Benutzer
Mitglied seit
14. Mai 2014
Beiträge
293
Punkte für Reaktionen
100
Punkte
43
Moin @Tuxnet,

manch mal kann ich auch nicht schlafen. ;)

Dieses Script ist genau das, was ich gesucht habe. Mit meinen Einstellungen, ohne 'memcache.distributed' scheint die Verbindung tatsächlich zu stehen. Allerdings sehe ich bei dem Punkt "Commands" nicht wirklich viel Veränderungen während ich in der Nextcloud arbeite. Bei jeder Aktualisierung des Fensters, geht der Zähler nur einen Punkt hoch und das ist der Browseraufruf selbst. Connected 1 könnte also auch heißen, dass es die Verbindung des Browsers ist.

2022-04-08 APCu INFO.png 2022-04-08 Redis Stats.png
 

Tuxnet

Benutzer
Mitglied seit
02. Jan 2019
Beiträge
618
Punkte für Reaktionen
74
Punkte
48
Moin Cashandy 👋

Schalte die NC mal aus, und starte den Redis neu.
Schau dir ja das PHP Skript an, und du wirst sehen es ist nichts verbunden. Starte dann die NC und halte das php Script im Auge
 

Crashandy

Benutzer
Mitglied seit
14. Mai 2014
Beiträge
293
Punkte für Reaktionen
100
Punkte
43
Tatsächlich! :confused:

Kann die Ursache eventuell daran liegen, dass Redis im Docker mit "root" läuft und die Nextcloud mit "http"?
Ich stolpere immer über den Befehl "usermod -a -G redis http" aka "usermod -a -G redis www-data". Weder auf der DS noch im Docker-Terminal kann der Befehl "usermod" ausgeführt werden.
 

gender

Benutzer
Mitglied seit
25. Mrz 2012
Beiträge
48
Punkte für Reaktionen
2
Punkte
8
Gibt es hier was neues?
Mein Zugriff auf Redis mit PHP 8.0. funktioniert auch nicht.
Sobald ich "'memcache.distributed' => '\\OC\\Memcache\\Redis'," zu der config.php hinzufüge, erhalte ich einen Internal Server Error
 

Tuxnet

Benutzer
Mitglied seit
02. Jan 2019
Beiträge
618
Punkte für Reaktionen
74
Punkte
48
Also bei mir funktioniert alles wunderbar.
Weder Redis noch nextcloud hub 3 laufen in einer docker Umgebung
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat