Nextcloud Optimierungen für Synology Installation

Status
Für weitere Antworten geschlossen.
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
 
Guten Morgen,
du hast aber nichts per ssh geändert ?
 
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
 
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?
 
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 ?
 
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: 20
Zuletzt bearbeitet:
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.
 
hast du den die gleiche Fehlermeldung wie ich, wenn du Zeile eingefügt hast ?
 
Ja, die Meldung ist mit Deiner identisch.
Wenn ich diese Zeile mit # auskommentiere, dann läuft die Nextcloud nach einem kurzen Moment wieder.
 
hmmmmm, bist du sicher das deine NC auf den Redis-Server zugreift ?
 
Sicher ist man sich nie, aber ein deutliches Indiz sagt doch das im Beitrag #67 geschilderte Verhalten aus.
 
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.
 
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.
 
Das stimmt, da die NC nicht startet kann sie nix in den log schreiben. Ich muss mich mal am Wochenende damit auseinandersetzen.
 

Anhänge

  • 10B86F0A-A728-446D-B502-D02B93834AD2.jpeg
    10B86F0A-A728-446D-B502-D02B93834AD2.jpeg
    132,2 KB · Aufrufe: 23
Zuletzt bearbeitet:
  • Like
Reaktionen: Crashandy
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
 
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
 
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.
 
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
 
Also bei mir funktioniert alles wunderbar.
Weder Redis noch nextcloud hub 3 laufen in einer docker Umgebung
 
Status
Für weitere Antworten geschlossen.
 

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