La commande du, utilisée pour récupérer l’espace disque utilisé par les téléchargements, causait des problèmes de performance pour mon tableau de bord d’administration. Oui, nous avons BEAUCOUP de téléchargements d’images. Plutôt que de la désactiver complètement (nous avons après tout un tableau de bord Grafana/Prometheus), j’ai décidé de la remplacer par une approximation très approximative beaucoup plus rapide en utilisant df. Ce changement est bien sûr sélectionnable par l’administrateur, la valeur par défaut étant du.
J’ai soumis une PR pour ce changement. C’est ma première PR, alors soyez indulgent avec moi :))
Avez-vous une idée approximative du temps que prenait du pour vous ? Je ne suis pas très enthousiaste à l’idée de cette approche pour résoudre le problème de performance et je pense qu’il existe deux alternatives :
Utiliser simplement Upload.sum(:filesize).to_i + OptimizedImage.sum(:filesize).to_i pour déterminer uploads_used_bytes comme nous le faisons pour les stockages externes.
Introduire un travail d’arrière-plan qui recalcule périodiquement les octets utilisés par les téléchargements et les met en cache dans Redis.
Personnellement, je suis plus favorable à (1) car c’est une solution beaucoup plus simple. Nous perdons une certaine précision, mais nous n’avons pas besoin d’une précision de 100 % ici. Cela sera toujours bien mieux que l’approximation que nous obtenons de df.
du prenait plus d’une minute sur HDD et avec SSD, cela prend environ 20 secondes.
Mon raisonnement est que si vous avez une instance qui dépend des téléchargements comme la nôtre, vous avez de toute façon une partition dédiée pour les téléchargements.
Mais oui, votre solution n°1 semble plus élégante. Je vais l’examiner et soumettre une PR modifiée.