Gestion ressources

Hello à tous,

Je viens de crasher 3 fois mon serveur en voulant partager un gros album photo de vacances (>300M) :expressionless:

Après quelques essais, j’ai l’impression que la génération des miniatures lors de l’accès à un gros dossier via l’interface web entraîne la saturation de mon serveur (cf. un screen du htop juste avant le plantage).

Du coup ma question sera un peu générale: comment peut-on s’y prendre (app pré-packagée? notions de bases gnu/linux?) pour plafonner une application et éviter ce genre de problème?

cheers
config: 3.6.5.3 (stable) sur RPi3

Bonjour,
Tu peux utiliser preview generator, tu le trouveras dans les applications de Nextcloud.
Tu crées une tâche cron avec la commande sudo -u nextcloud crontab -e pour générer les miniatures la nuit:

0 4 * * * /usr/bin/php -f /var/www/nextcloud/occ preview:pre-generate

Tu peux également limiter la taille des miniatures dans le fichier /var/www/nextcloud/config/config.php avec par exemple:

'preview_max_x' => 768,
'preview_max_y' => 768,

Il faut générer d’abord les miniatures des images déjà existantes avec la commande:

cd /var/www/nextcloud
sudo -u nextcloud occ preview:generate-all -vvv

Mon raspberry plantait également dans le passé sans limiter la valeur de pm.max_children à 3 au lieu de 10 dans le fichier /etc/php/7.0/fpm/pool.d/nextcloud.conf. Par contre c’est beaucoup plus lent à générer les miniatures avec cette valeur. Je n’ai plus le souci avec les dernières mises à jour, ou bien est-ce dû au fait que toutes mes miniatures sont maintenant générées et que je n’ai plus de gros dossiers d’ajoutés.
J’ai pris l’habitude de créer des sous-dossiers plutôt que d’avoir un seul dossier avec plusieurs centaines d’image. J’attends également que toutes les miniatures soient affichées avant d’essayer de les ouvrir. En procédant comme ceci, je n’ai plus jamais de problème sur un RPI3 B+.

2 Likes

Génial, merci pour les tuyaux je teste ça.

The current testing release of Nextcloud may interest you, as it now configures php according to your server’s capacity.

3 Likes

Justement j’allais demander si quelqu’un utilisait cette appli !
Comment peut-on vérifier si le cron fonctionne correctement ?
Mon dossier de preview fait 60GB alors que mes données en font 80… Je sens qu’il y a un loup !

Bonjour Limezy,
j’ai oublié de préciser, preview generator génère toutes les miniatures possibles et il y en a beaucoup! je ne les génère pas toutes, je me contente des miniatures carrés pour l’affichage mosaïque et des miniatures pour l’affichage des images.
Je n’utilises pas la gallerie non plus qui est bien trop lente sur raspberry. je l’ai désactivée avec l’application App order.
De mémoire, j’avais passé ces commandes à l’installation de yunohost:

cd /var/www/nextcloud
sudo -u nextcloud occ config:app:set --value="256" previewgenerator squareSizes
sudo -u nextcloud php occ config:app:set --value="1024" previewgenerator widthSizes
sudo -u nextcloud php occ config:app:set --value="1024" previewgenerator heightSizes

J’ai trouvé cette documentation récente qui devrait t’aider: https://ownyourbits.com/2019/06/29/understanding-and-improving-nextcloud-previews/

Par contre il faudra supprimer tes miniatures actuelles en stoppant Nginx, supprimer le dossier des previews et rescanner avec:

cd /var/www/nextcloud
sudo -u nextcloud php occ files:scan-app-data 

N’oublie pas d’adapter le fichier /var/www/nextcloud/config/config.php aux valeurs que tu auras choisis dans les commandes précédentes pour limiter la taille des miniatures.
Si tu rencontres des difficultés, n’hésite pas.

Merci pour le coup de pouce, c’est top !
J’ai respiré un grand coup, stoppé Nginx, supprimé toutes mes preview, changé tous les paramètre en mettant les paramètres par défaut de ton article (ultra intéressant par ailleurs).

cd /var/www/nextcloud
sudo -u nextcloud php occ config:app:set previewgenerator squareSizes --value=“32 256”
sudo -u nextcloud php occ config:app:set previewgenerator widthSizes --value=“256 384”
sudo -u nextcloud php occ config:app:set previewgenerator heightSizes --value=“256”
sudo -u nextcloud php occ config:system:set preview_max_x --value 2048
sudo -u nextcloud php occ config:system:set preview_max_y --value 2048
sudo -u nextcloud php occ config:system:set jpeg_quality --value 60
sudo -u nextcloud php occ config:app:set preview jpeg_quality --value=“60”
sudo -u nextcloud php occ files:scan-app-data

Puis j’ai lancé la fameuse commande

sudo -u nextcloud php occ preview:generate-all -vvv

Dans un screen histoire de pouvoir revenir régulièrement revoir où ça en est sans perdre d’historique.
On va voir ce que ça donne !

Mon cas d’usage est différent du tien. Mon serveur est un VPS, et j’aimerais pouvoir utiliser la gallerie pour mes partages de photos en famille. J’aime beaucoup la photo, j’ai donc un bon appareil qui a la fâcheuse tendance à sortir des jpg d’une vingtaine de mégas - voire plus - après traitement. J’aime bien l’idée d’avoir une gallerie rapide que mes proches peuvent visualiser rapidement sans télécharger les “HD”, mais qu’ils puissent avoir le fichier quali en téléchargement s’ils veulent en imprimer une ou deux. Jusque là, j’étais confronté à un problème de rapidité de la gallerie, quasiment inutilisable du fait de la lenteur de chargement…

D’après les quelques liens que j’ai pu lire sur le sujet, il y aurait de nettes améliorations de la gallerie prévues pour Nextcloud 18, donc assez bientôt ! Hélas, Debian 9 nous cloue pour l’instant aux versions 15.x …

Bon, j’ai des erreurs “2006 MySQL server has gone away” qui arrivent au bout d’une demie heure / une heure de preview:generate-all. Ça a l’air assez courant en fait.


Du coup je ne sais pas trop quelle stratégie adopter…

  • Recommencer le preview:generate-all ?
  • Lancer les crons preview:pre-generate ?

Je n’ai pas encore très bien compris si le pre-generate va lancer les preview de mes documents non scannés encore, ou bien les considérer comme déjà scannés ?

Pour ceux que ça intéresse le pre-generate ne fonctionne pas. Il ne prend que les fichiers arrivés / modifiés depuis le generate-all :frowning_face:

Il faut donc :

  1. Refaire un files:scan-app-data
  2. Relancer un generate-all (qui prend en compte les vignettes déjà générées, ouf !)

Recommencer à chaque fois que le generate-all plante (càd régulièrement)

Salut !
C’est hyper intéressant ! J’ai un raspberry et c’est vrai que ça rame un peu…
J’aimerais bien appliquer les paramètres que tu recommandes mais j’ai peur de tout faire foirer.
Est-ce que tu voudrais bien me dire dans quel ordre passer ces commandes et rentrer un poil plus dans les détails stp ?
Par exemple pour cette partie :

Ce serait achement sympa :slight_smile:

Bonne année !

Bonne année.
Le generate-all, je ne l’ai fais qu’une fois, j’avais eu les mêmes plantages mais seulement une ou 2 fois dans mon cas, ça doit dépendre de la quantité et de la taille des images à traiter. j’avais lancé également dans un screen car ça prend beaucoup de temps la 1ère fois sur un raspberry.
Eh oui, le pre-generate ne traite que les nouveaux fichiers mais tu as trouvé l’info.
Pour la galerie, elle reste accessible pour les partages même si on la désactive et qu’on utilise l’affichage mosaïque au quotidien.

Bonne année charly!
Le fichier /var/www/nextcloud/config/config.php permet d’ajuster la configuration de Nextcloud. Tu peux y définir la taille maximale des miniatures générées.
Tu stoppes d’abord Nginx, bien que je ne suis pas certain que ce soit indispensable, c’est plus prudent:

systemctl stop nginx

Tu modifies ensuite le fichier:

nano var/www/nextcloud/config/config.php

Tu ajoutes juste au début du fichier en dessous de
<?php
$CONFIG = array (

'preview_max_x' => 768,
'preview_max_y' => 768,

Tu peux modifier 768 par la valeur qui te convient 1024, 2096, etc…ça correspond à la taille maxi des images qui s’affichent dans nextcloud.

Tu relances le serveur nginx:

systemctl start nginx

Si tout s’est bien passé, les nouvelles miniatures ne dépasseront plus la taille indiquée.
La 1ère fois que je l’ai fais, nextcloud ne fonctionnait plus. J’avais changé le propriétaire de ce fichier pour root je ne sais comment. Aussi si ça t’arrives, commence d’abord par vérifier avec ls -l si il n’y a pas eu de changement. Si tu as peur de te tromper, fais d’abord une copie du fichier avant de le modifier:

cp var/www/nextcloud/config/config.php var/www/nextcloud/config/config.php.bak

Pour preview generator, tu peux suivre l’essentiel du lien que j’ai mis.

L’ordre suivant est à respecter:
1-Supprimer tes anciennes miniatures (/home/yunohost.app/nextcloud/data/appdata_xxxxxxxxxxxx/preview) et lancer un scan-app-data
2-Configurer preview generator pour les tailles voulues avec config:app:set previewgenerator (et éventuellement la qualité jpeg en même temps). Pour ma part je me suis contenté des 3 commandes données plus haut.
3-Lancer le generate-all dans un screen.
4-Une fois le generate-all terminé, faire la tâche cron pre-generate.

Je l’ai fais il y a quelque temps quand j’ai installé yunohost, j’espère que je n’ai rien oublié.

Deux remarques sur le tuto indiqué plus haut :
Pour stopper nginx tu peux aussi utiliser la fonction Yunohost :

sudo yunohost service stop nginx

Screen n’est pas installé par défaut sur Yunohost, il faudra donc l’installer au préalable

sudo apt-get install screen

@metyun merci beaucoup pour tes indications complémentaires !

Super, merci à vous !

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.