Les performances d’Immich sont généralement plafonnées par la dépendance active la plus lente dans un flux de travail donné, et non par une caractéristique matérielle permanente.
Les téléversements, la recherche intelligente, la navigation dans la timeline et la lecture vidéo empruntent des combinaisons différentes de client, de réseau, de serveur, de base de données, de workers et de stockage. La limite réelle évolue lorsque le point d’accès ou la charge des tâches en arrière-plan change. Une analyse utile de la capacité commence donc par un parcours plutôt que par une liste de composants.
Une limite de performance est liée à un point d’arrivée
Une limite de performance correspond au débit utile maximal ou à la latence minimale atteignable pour une opération donnée dans des conditions définies. Ce n’est pas le pourcentage maximal d’utilisation du processeur. L’acceptation d’un téléversement, la sélection des résultats de recherche, l’affichage des vignettes et la lecture d’une vidéo ont des points d’achèvement différents et donc des chaînes de dépendances différentes.
L’article de ZimaSpace consacré au parcours des données d’Immich distingue l’acceptation des téléversements, la disponibilité après traitement, la sélection des résultats de recherche et la diffusion des médias. Cette distinction explique pourquoi l’amélioration d’un worker d’apprentissage automatique peut accélérer l’indexation sans modifier la diffusion des vignettes, et pourquoi un accès réseau plus rapide ne peut pas corriger une requête lente de base de données.
Pour chaque problème ou benchmark, notez l’événement de départ, l’événement d’arrivée, le client, la cohorte de médias, l’état du cache et la charge en arrière-plan. Ce n’est qu’ensuite qu’il faut représenter les étapes nécessaires. La limite est déterminée par l’étape dont le temps de traitement ou la file d’attente empêche le point d’arrivée de s’améliorer lorsque le travail amont arrive plus rapidement.
L’état de la base de données et des files d’attente limite souvent la coordination
La base de données sélectionne les ressources et conserve les relations entre les éléments de l’application, tandis que l’état des files d’attente coordonne le travail en arrière-plan. Leurs délais peuvent plafonner la recherche, les importations ou la disponibilité, même lorsque les workers de calcul disposent encore de cycles libres. À l’inverse, une file d’attente profonde peut indiquer que le travail entrant dépasse le débit des workers, plutôt qu’un ralentissement du service de file d’attente lui-même.
Une analyse approfondie de l’architecture décrit PostgreSQL comme le système qui stocke les utilisateurs, les ressources, les albums et les représentations vectorielles, tandis que Redis gère les files d’attente asynchrones. Cette source présente une explication indépendante du déploiement ; sa valeur ici réside dans la séparation des dépendances, et non dans un quelconque chiffre fixe de ressources.
Observez ensemble le temps de réponse de la base de données, les attentes liées aux connexions, la profondeur de la file d’attente et le nombre de tâches terminées par minute. Si la profondeur de la file augmente tandis que le débit des workers reste stable et que les temps de la base de données ne changent pas, les workers sont probablement la limite. Si chaque étape est interrompue par des attentes liées à la base de données, augmenter la simultanéité des workers peut aggraver la limite.
Le stockage, la mémoire et le calcul se relaient comme goulot d’étranglement
La mémoire peut conserver les pages de la base de données, les vignettes et les modèles à proximité des processeurs. Lorsque l’ensemble de travail ne tient plus en mémoire, la latence du stockage s’introduit dans des requêtes qui bénéficiaient auparavant de la vitesse de la mémoire. Lors de nouvelles importations, les tâches intensives en calcul — génération de vignettes, traitement vidéo et apprentissage automatique — peuvent au contraire dominer. La dépendance limitante change selon l’état et la charge de travail.
Une analyse de l’auto-hébergement distingue les besoins modestes de l’application et de la base de données d’une demande mémoire plus importante pour l’apprentissage automatique, et souligne l’effet du chargement des modèles. Les chiffres précis varient selon la version et le modèle, mais la leçon concernant les dépendances reste valable : la quantité totale de RAM ne révèle pas quel service perd son ensemble de travail.
Comparez les phases à froid, à chaud et soutenues. Un gain important entre le fonctionnement à froid et à chaud indique un chargement de modèle ou de cache ; une latence élevée du périphérique lors de requêtes étendues indique des défauts dans l’ensemble de travail ; un calcul saturé avec des entrées-sorties stables indique un problème de traitement. Après avoir modifié une limite, relancez l’intégralité du parcours, car l’étape suivante peut désormais devenir dominante.
Établissez une carte des points d’arrivée et de leurs dépendances
Créez des lignes pour l’acceptation d’un téléversement, la réponse aux résultats de recherche, la dernière vignette visible de la timeline et le démarrage d’une vidéo. Ajoutez des colonnes pour la préparation du client, le transfert réseau, le traitement par l’application, le travail de la base de données ou de la file d’attente, le traitement par les workers, l’accès au stockage et le décodage côté client. Indiquez les étapes inutilisées au lieu d’attribuer chaque composant à chaque point d’arrivée.
Un témoignage de la communauté sur le déport de la génération des vignettes pour une photothèque familiale de deux téraoctets illustre la nécessité pratique de distinguer la capacité de traitement de la capacité de stockage du NAS. Il ne prouve pas que le déport est toujours nécessaire ; il identifie un parcours de worker précis qui peut dominer lors d’une importation importante.
Mesurez une exécution représentative et classez uniquement les attentes observées. Proposez une intervention pour l’étape prioritaire et une condition de rejet. Si le point d’arrivée s’améliore, mettez à jour la carte, car la limite s’est déplacée ; dans le cas contraire, abandonnez cette hypothèse. Vous obtenez ainsi une chaîne de preuves plutôt qu’une liste d’achats.
Centre Tech & IA
Plus à lire

Pourquoi Immich retraitе-t-il les données existantes après une mise à niveau ?
Immich peut retraiter les fichiers lorsque’une mise à niveau invalide des dérivés, des métadonnées, des modèles ou l’état des tâches précédents ; un traitement...

Réseau Immich : comment la découverte, le DNS et le routage assurent l’accessibilité
Immich n’est accessible que lorsque la sélection du point de terminaison, le DNS, le routage, la gestion du NAT ou du proxy, le TLS...

Immich pour les familles : comment l’identité et les autorisations façonnent l’expérience
L’utilisation d’Immich en famille repose sur des identités distinctes, la propriété des contenus, un partage intentionnel, une administration limitée et une révocation testée.

