High CPU immediately after a Plex update can be temporary migration or analysis work, but it should not be assumed normal indefinitely.
The safest diagnosis is time-bounded. Record the update version, startup time, active Plex processes, and disk activity. Wait for explicit migration or analysis work to finish, then compare CPU during a second clean restart. If the load persists without the same task, move from “update transition” to regression or workload diagnosis.
Look for Database Migration Before Changing Settings
Some Plex releases require existing database state to be scanned or transformed before the server becomes fully ready. That work can consume CPU and app-data I/O for a limited period.
Some releases require a full scan of existing database records before startup completes, so temporary CPU and app-data I/O should be judged against the end of that migration rather than against normal idle behavior.
Check logs for migration activity and note whether CPU falls when readiness returns. Do not interrupt a known migration merely because the first restart is slower than usual.
Separate Re-Analysis From a Stuck Process
An update can also trigger new or repeated media analysis, preview, or metadata work. That workload may continue after the web interface is reachable and can look like a server regression.
Post-update analysis can consume CPU for an extended window; treat cold and rebuilding working sets as one reason first-run behavior may differ from later idle behavior while you identify the actual Plex task.
Pause optional scheduled tasks or wait for the active job to finish, then repeat the same idle observation. If CPU drops, reschedule the task rather than changing global CPU limits.
Compare the Second Restart
One-time work should not recur identically on every clean start. A second restart after completion is the fastest control test for separating migration from persistent behavior.
Keep the app-data path unchanged during the comparison and monitor the same process names and metrics. The persistent app-data path should remain constant so the only deliberate variable is the completed update.
If the second start still pegs CPU, collect logs and identify whether the workload is search, scan, transcode, or another process. Continue from that concrete workload, not from the update date alone.
Roll Back Only With a Safe State Boundary
A binary rollback can be risky if the newer version changed stored state in a way the older version does not understand. Protect the pre-update database before using rollback as a troubleshooting shortcut.
A rollback should restore a matching state copy because clean recovery points protect against changes that an older binary may not safely understand.
Restore the known-good pre-update state with the matching version when a rollback is necessary. Do not alternate old and new binaries against one live database while trying to isolate high CPU.
Support & Tips
More to Read

Can Jellyfin Safely Share a GPU or Accelerator With Another Container?
GPU sharing is conditional: verify device visibility and driver support, then run both workloads and watch for software fallback.

How to Tell Whether a Jellyfin Error Comes From the Client or Server
A Jellyfin error belongs to the client when it follows one device; it belongs to the server when multiple clients fail under the same...

How to Configure Jellyfin Cache and Temporary Storage
Separate durable state, rebuildable cache, and temporary transcode storage, then verify capacity and permissions with a real playback test.

