まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

Upload de gros fichiers vidéos sur une instance Peertube

peertube.png Quand on lit la documentation où les issues « Github » de Peertube, Chocobozzz nous indique clairement qu'il fût un temps révolu où la taille maximale d'une vidéo accepté par Peertube était de 4Gio, mais que maintenant c'est bien 8Gio qu'il est possible d'envoyer.

  • Pour le vérifier, sous Yunohost il suffit d'aller voir le fichier de config nginx dédié :
cat /etc/nginx/conf.d/peertube.makotoworkshop.org.d/peertube.conf

Et de retrouver l'information spécifiée ici :

# Hard limit, PeerTube does not support videos > 8GB
    client_max_body_size 8G;
    proxy_connect_timeout       600;
    proxy_send_timeout          600;
    proxy_read_timeout          600;
    send_timeout                600;
  • Et pourtant, j'ai voulu uploader une vidéo de 5,2Gio, et de recevoir l'erreur « 500 Internal Server Error », délivrée par nginx

peertubenginx.png

  • Comme il faut toujours penser à aller voir les logs, voici ce qu'indique ce dernier > /var/log/nginx/peertube.makotoworkshop.org-error.log
2018/12/08 11:54:07 [crit] 16767#16767: *330304 pwrite() "/var/lib/nginx/body/0000032486" failed (28: No space left on device),

Visiblement le fichier vidéo est uploadé depuis mon ordi de bureau sur le serveur, dans le dossier /var/lib/nginx/body/, et si on regarde l'espace libre sur le disque, on se rend compte effectivement que ça risque pas de marcher :

Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/sda1           11G    7,1G  3,5G  68% /


Pour vérifier, j'ai ré-uploadé la vidéo et tenté de regarder en même temps dans le dossier /var/lib/nginx/body/, mais rien n’apparaît.
Pour voir quelque chose, il faut observer le démon nginx, en répérant tout d'abord son pid.

  • Donc durant d'upload, faire un top et relever le pid nginx au sommet de la liste, par exemple :
PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
16767 www-data  20   0  345480   9472   4272 S   1,3  0,5  13:07.85 nginx
  • Taper ensuite :
lsof -p 16767 | grep /var/lib/nginx/body/

Qui renvoie l'état de l'upload :

nginx   16767 www-data   85u      REG                8,1 3180183973      4917 /var/lib/nginx/body/0000032604 (deleted)

Jusqu'au dernier morceau, puis plus rien, le fichier à disparu, et le message d'erreur à retenti.

lsof -p 16767 | grep /var/lib
nginx   16767 www-data   85u      REG                8,1 3655360512      4917 /var/lib/nginx/body/0000032604 (deleted)

On voit que la taille 3655360512 arrondis en Gio donne 3,4 Gio, ce qui correspond à l'espace libre de la partition indiqué plus haut.
C'est donc confirmé, le problème à bien pour solution l'attribution de suffisamment d'espace disque libre pour permettre à ce cache de pouvoir se faire normalement.

  • Pour cela on édite la configuration nginx :
nano /etc/nginx/conf.d/peertube.makotoworkshop.org.d/peertube.conf

Pour ajouter à la fin un dossier situé sur un disque contenant suffisamment d'espace, donc au moins 8Gio :

client_body_temp_path /home/yunohost.app/peertube/storage/uploads;

Et redémarrer les serveurs pour prendre en compte ce changement :

service peertube restart
service nginx restart


  • Pour confirmer, refaire la manipulation précédente, en regardant cette fois le nouveau chemin :
lsof -p 28744 | grep /home/yunohost.app/peertube/storage/uploads

Qui renvoie alors, une fois le fichier totalement uploadé :

nginx   28744 www-data   67u      REG                8,3 5219139353  25953028 /home/yunohost.app/peertube/storage/uploads/0000000004 (deleted)

On a bien les 5,2Gio.
Peertube passe donc de la phase « Upload 100% » à la phase « Processing…», et durant ce temps la vidéo reste présente dans le dossier temporaire.
Puis Peertube passe en phase d'encodage, et le fichier est alors supprimé du dossier, la commande lsof ne renvoie plus rien.


Ressources :
- https://github.com/Chocobozzz/PeerTube/issues/1359
- https://github.com/Chocobozzz/PeerTube/issues/1423

Commentaires

1. Le mercredi, 26 décembre 2018, 21:22 par HDY46

Salut Makoto,

Je vois que c'est le deuxième article où tu parles de Yunohost et j'aurais aimé savoir si tu avais basculé ton auto-hébergement sur Yunohost ?

Perso je commence à utiliser Peertube, j'avais commencé l'auto-hebergement en lisant ton blog, voila si tu voulais faire un article sur les nouveautés (s'il y en a) concernant ton auto-hébergement.

En tous cas chapeau pour tes articles toujours aussi détaillés.

A+

2. Le mardi, 1 janvier 2019, 11:02 par Makoto

Élo !

Et bien oui je suis passé à Yunohost depuis la Beta 3.0 et je dois dire que j'en suis très satisfait !
Il y a près de dix ans j'avais tout fait à la main non seulement car de tels types d'outils n'existaient pas vraiment mais surtout avec la volonté de comprendre comment l'hébergement Web fonctionne en détail.
Avec Yunohost, après une prise en main très rapide, j'ai pu installer mon serveur sans quasi toucher à la ligne de commande ( sauf personnalisation extrême ou bug applicatif ) en un temps record.
C'est un véritable « clicodrôme », il n'y a pas grand chose à dire qui ne soit évident, raison pour laquelle je n'ai pas prévu l'écrire sur le sujet.
La plupart du temps, il suffit par exemple de désirer une appli (peertube ? piwigo ? netdata ?) de constater si elle est présente et en status « working » dans la liste des app communautaires ou officielle, de cliquer install… et « Voilà :) ».

Merci de me lire :)

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet