Why Does Immich Return Intermittent Errors During Large Mobile-Library Imports?

Eva Wong is the Technical Writer and resident tinkerer at ZimaSpace. A lifelong geek with a passion for homelabs and open-source software, she specializes in translating complex technical concepts into accessible, hands-on guides. Eva believes that self-hosting should be fun, not intimidating. Through her tutorials, she empowers the community to demystify hardware setups, from building their first NAS to mastering Docker containers.

Intermittent Immich errors during a large mobile import usually mean one layer is failing under overlap, not that the entire library or every uploaded asset is corrupt.

Large imports combine mobile background behavior, long requests, reverse-proxy or tunnel limits, database writes, storage I/O, thumbnail and video work, and machine-learning queues. Capture a small cohort of failed assets and timestamps first. Then determine whether the failure begins on the phone, the network path, the application server, or a saturated dependency.

Classify the Error Cohort Before Retrying Everything

Group failures by media type, file size, source device, network path, and time. If only large videos fail, investigate request duration and upload limits before CPU. If random photos and videos fail at the same busy intervals, shared server resources or network instability become stronger candidates.

A 2026 Immich user report describing many mobile upload errors is useful because it shows how a large phone backlog can surface repeated failures that need per-item and per-path diagnosis. It does not establish one universal mobile-client bug.

Do not select “retry all” as the first diagnostic action. Save ten failed asset names or IDs, one successful control item, and the corresponding client and server log window. A small known cohort lets you test changes without generating a fresh storm that hides the original evidence.

Compare Local Uploads With the Normal Remote Path

Upload the same small and large test files over stable local Wi-Fi directly to the trusted local endpoint, then repeat through the usual remote hostname, VPN, tunnel, or reverse proxy. Keep account and asset unchanged so the route is the main variable.

A report of large-file backup failures highlights why proxy or tunnel request limits belong in this branch. The reported service and thresholds are deployment-specific; the general test is whether direct local transfer passes while the remote path fails consistently.

If both paths fail on the same assets, follow server and storage evidence. If only the remote path fails, inspect maximum body size, request buffering, idle and read timeouts, TLS termination, mobile network transitions, and retransmissions. Changing thumbnail concurrency will not repair a request that never reaches Immich completely.

Correlate Errors With Queue Growth and Resource Pressure

Large imports can keep accepting uploads while background jobs accumulate. Observe CPU, memory pressure, block I/O latency, database responsiveness, container restarts, and job completions during the failure window. High utilization alone is not proof; the metric must change at the same time as the errors.

The Docker resource-monitoring article on container CPU, memory, network, and disk metrics shows the value of comparing containers instead of reading one host-wide average. On Linux, combine container metrics with host storage and memory-pressure evidence for the same timestamps.

If memory pressure causes container exits, storage latency rises with upload errors, or database response time spikes while the queue stops advancing, lower only the responsible workload or concurrency and repeat the fixed cohort. If resource graphs remain calm, continue to application logs and network-path diagnosis.

Treat Error Rate and Tail Latency as Load Signals

A system may look healthy by average response time while a small percentage of requests time out during peaks. Record the number of attempted uploads, failures, median response time, and slower tail requests across a controlled window. This makes “intermittent” measurable instead of anecdotal.

The load-testing framework in error and latency analysis recommends analyzing status classes, connection problems, distributions, and time-series correlations. You do not need to stress the family library aggressively; use the same analytical structure on the real import rate.

If reducing arrival rate sharply lowers failures while every individual asset succeeds, the current stack lacks headroom for that import intensity. If the same files fail even one at a time, the issue is asset-specific, path-specific, or a deterministic software error rather than generic saturation.

Reduce One Pressure Source and Retest the Same Import Pattern

Choose the safest change predicted by the evidence: lower one background concurrency, pause another heavy container, use the local route, move the import outside a backup window, or correct a proxy timeout. Do not change CPU limits, storage, proxy rules, and app versions simultaneously.

The ZimaSpace workflow for phone photo backup interruptions provides the mobile-side branch: background scheduling, cloud-only originals, and changing network conditions can interrupt uploads even when the server is healthy.

Pass when the fixed cohort succeeds and the same larger import runs with a stable error rate, advancing queues, and acceptable interactive performance. Escalate when failures persist at low load or repeat on identical assets; include client logs, server logs, proxy status, resource graphs, file type and size, and the first failing request.

Support & Tips

More to Read

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.