Immich-prestanda begränsas vanligtvis av den långsammaste aktiva beroendekomponenten i ett specifikt arbetsflöde, inte av en permanent hårdvaruspecifikation.
Uppladdningar, smart sökning, tidslinjenavigering och videouppspelning går genom olika kombinationer av klient, nätverk, server, databas, arbetare och lagring. Den faktiska gränsen förändras när slutpunkten eller överlappningen med bakgrundsarbete ändras, så ett användbart kapacitetssvar börjar med en sökväg snarare än en komponentlista.
En prestandagräns hör till en slutpunkt
En prestandagräns är den högsta användbara takten eller den lägsta uppnåeliga latensen för en operation under angivna förhållanden. Det är inte den högsta CPU-användningen. Mottagning av uppladdningar, val av sökresultat, synliga miniatyrbilder och spelbar video har olika slutförandepunkter och därför olika beroendekedjor.
ZimaSpaces artikel om Immichs datasökväg skiljer mellan mottagning av uppladdningar, bearbetningsberedskap, val av sökresultat och medieleverans. Den skillnaden förklarar varför en förbättring av en maskininlärningsarbetare kan påskynda indexeringen utan att påverka leveransen av miniatyrbilder, och varför snabbare nätverksåtkomst inte kan åtgärda en långsam databasfråga.
För varje klagomål eller benchmarktest ska du skriva ned starthändelse, sluthändelse, klient, mediakohort, cachestatus och bakgrundsbelastning. Rita först därefter upp de nödvändiga stegen. Gränsen sätts av det steg vars servicetid eller kö hindrar slutpunkten från att förbättras när föregående arbete anländer snabbare.
Databas- och köstatus begränsar ofta samordningen
Databasen väljer resurser och bevarar applikationens relationer, medan köstatus samordnar bakgrundsarbete. Deras fördröjningar kan begränsa sökning, import eller beredskap även när beräkningsarbetare har ledig kapacitet. Omvänt kan en djup kö visa att inkommande arbete överstiger arbetarnas genomströmning, snarare än att själva köhanteringen är långsam.
En djupgående arkitekturanalys beskriver hur PostgreSQL lagrar användare, resurser, album och vektorinbäddningar, medan Redis hanterar asynkrona jobbköer. Källan är en fristående förklaring av en driftsättning, och dess värde här ligger i att beroendena separeras, inte i något fast resurstal.
Observera databasens svarstid, väntetider för anslutningar, ködjup och antalet slutförda jobb per minut tillsammans. Om ködjupet ökar medan arbetarnas genomströmning är oförändrad och databastiderna förblir stabila är arbetarna sannolikt begränsningen. Om alla steg pausar kring databasväntetider kan ökad samtidighet hos arbetarna göra gränsen sämre.
Lagring, minne och beräkning byter av varandra flaskhalsrollen
Minne kan hålla databassidor, miniatyrbilder och modeller nära processorerna. När arbetsmängden inte längre får plats tillkommer lagringslatens i begäranden som tidigare gick med minneshastighet. Under nya importer kan beräkningsintensivt arbete med miniatyrbilder, video och maskininlärning i stället dominera. Den begränsande beroendekomponenten förändras med tillstånd och arbetsbelastning.
En analys av självhostning skiljer mellan måttliga behov hos applikationen och databasen och ett större minnesbehov för maskininlärning, samt beskriver effekten av modellinläsning. Exakta siffror varierar mellan versioner och modeller, men beroendelärdomen är stabil: den totala mängden RAM visar inte vilken tjänst som förlorar sin arbetsmängd.
Jämför kalla, varma och långvariga faser. En stor förbättring från kallt till varmt pekar på inläsning av modeller eller cachelagring; hög enhetslatens vid breda frågor pekar på missar i arbetsmängden; mättad beräkningskapacitet med stabil I/O pekar på bearbetning. När du har ändrat en begränsning ska du köra hela sökvägen igen, eftersom nästa steg nu kan dominera.
Bygg en karta från slutpunkt till beroende
Skapa rader för mottagning av uppladdningar, svar på sökresultat, den sista synliga miniatyrbilden i tidslinjen och videostart. Lägg till kolumner för klientförberedelse, nätverksöverföring, applikationshantering, databas- eller köarbete, arbetar bearbetning, lagringsåtkomst och klientavkodning. Markera steg som inte används i stället för att tilldela varje komponent till varje slutpunkt.
En communityrapport om avlastning av generering av miniatyrbilder för ett familjebibliotek på två terabyte visar det praktiska behovet av att skilja bearbetningskapacitet från NAS-lagringskapacitet. Den bevisar inte att avlastning alltid krävs; den identifierar en specifik arbetarväg som kan dominera en stor import.
Mät en representativ körning och rangordna endast observerade väntetider. Föreslå en åtgärd för det ledande steget och ett villkor för att förkasta den. Om slutpunkten förbättras uppdaterar du kartan eftersom gränsen har flyttats; om den inte gör det förkastar du hypotesen. På så sätt skapas en evidenskedja i stället för en inköpslista.
Teknik- och AI-hubb
Mer att läsa

Varför bearbetar Immich befintliga data igen efter en uppgradering?
Immich kan bearbeta tillgångar på nytt när en uppgradering gör tidigare härledda filer, metadata, modeller eller jobbstatus ogiltiga; upprepat ändlöst arbete är ett separat...

Immich-nätverk: Hur upptäckt, DNS och routing skapar åtkomlighet
Immich är endast åtkomligt när val av slutpunkt, DNS, routing, NAT- eller proxyhantering, TLS och applikationssvar bildar en giltig sökväg.

Immich för familjer: Hur identitet och behörigheter formar upplevelsen
Familjeanvändning av Immich bygger på separata identiteter, ägande av material, avsiktlig delning, begränsad administration och testad återkallelse.

