Windows Optimization
Windows Optimization
Section titled “Windows Optimization”Maximize your Plex server’s performance on Windows with these optimization techniques.
Hardware Transcoding
Section titled “Hardware Transcoding”Intel Quick Sync Setup
Section titled “Intel Quick Sync Setup”- Verify CPU supports Quick Sync (Intel 6th gen+)
- Enable iGPU in BIOS (even with dedicated GPU)
- Install latest Intel graphics drivers
- Settings → Transcoder → Enable hardware acceleration
# Verify Intel GPU is availableGet-WmiObject win32_VideoController | Where-Object { $_.Name -like "*Intel*" }NVIDIA NVENC Setup
Section titled “NVIDIA NVENC Setup”- Install latest NVIDIA Game Ready or Studio drivers
- Verify GPU supports NVENC (GTX 1050+)
- Settings → Transcoder → Enable hardware acceleration
# Check NVIDIA driver and GPUnvidia-smiDatabase Optimization
Section titled “Database Optimization”Move Database to SSD
Section titled “Move Database to SSD”- Stop Plex Media Server
- Copy
%LOCALAPPDATA%\Plex Media Serverto SSD - Set
PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIRenvironment variable - Start Plex
# Set new database location[Environment]::SetEnvironmentVariable( "PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR", "D:\PlexData", "Machine")Optimize Database Manually
Section titled “Optimize Database Manually”$plexDB = "$env:LOCALAPPDATA\Plex Media Server\Plug-in Support\Databases\com.plexapp.plugins.library.db"
# Stop Plex firstStop-Process -Name "Plex Media Server" -Force -ErrorAction SilentlyContinueStart-Sleep -Seconds 5
# Optimizesqlite3 $plexDB "VACUUM;"sqlite3 $plexDB "REINDEX;"
Write-Host "Database optimized"Network Performance
Section titled “Network Performance”Gigabit Network
Section titled “Gigabit Network”- Use wired Ethernet for server
- Avoid Wi-Fi for high-bitrate content
- Consider 2.5GbE for 4K HDR streaming
Quality of Service (QoS)
Section titled “Quality of Service (QoS)”Configure router QoS to prioritize Plex traffic on port 32400.
Transcoder Temp Directory
Section titled “Transcoder Temp Directory”Move transcoder temp to fast storage:
# Create RAM disk for transcoding (advanced)# Or use SSD path$transcodeDir = "D:\PlexTranscode"New-Item -ItemType Directory -Path $transcodeDir -Force
# Set in Plex Settings → Transcoder → Transcoder temporary directoryMemory Optimization
Section titled “Memory Optimization”Increase Process Priority
Section titled “Increase Process Priority”# Run Plex with high priorityGet-Process "Plex Media Server" | ForEach-Object { $_.PriorityClass = "High" }Windows Memory Settings
Section titled “Windows Memory Settings”- Disable memory compression for media drives
- Ensure adequate page file size (system managed)
Power Settings
Section titled “Power Settings”Prevent sleep during operation:
# Set power plan to High Performancepowercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
# Prevent sleeppowercfg /change standby-timeout-ac 0powercfg /change hibernate-timeout-ac 0Monitoring Performance
Section titled “Monitoring Performance”Task Manager
Section titled “Task Manager”- Monitor Plex Media Server CPU usage
- Check GPU utilization (Performance tab)
Resource Monitor
Section titled “Resource Monitor”- Network activity for streaming
- Disk I/O for transcoding
PowerShell Monitoring
Section titled “PowerShell Monitoring”# Monitor Plex resource usagewhile ($true) { $plex = Get-Process "Plex Media Server" -ErrorAction SilentlyContinue if ($plex) { Write-Host "CPU: $([math]::Round($plex.CPU, 2))% | Memory: $([math]::Round($plex.WorkingSet64/1MB, 2)) MB" } Start-Sleep -Seconds 5}Next Steps
Section titled “Next Steps”- Remote Access - Configure external access
- Troubleshooting - Fix common issues