Why is my NAS so slow?

Expected transfer speed on Gigabit Ethernet: 100–115 MB/s for large files. Below 40 MB/s means something is wrong. Here is how to find out what.

Step 1Test disk speed first (bypasses the network)
bash
# Write test — measures raw disk speed
$
sudo dd if=/dev/zero of=/mnt/data/test.tmp bs=1G count=1 oflag=direct
1073741824 bytes in 7.8s = 137 MB/s ← disk is fast, check network
1073741824 bytes in 45s = 24 MB/s ← disk is slow, check drives/RAID

# Clean up
$
rm /mnt/data/test.tmp
Step 2Test network speed
bash — install iperf3 on both NAS and PC
$
iperf3 -s
# run on the NAS
$
iperf3 -c 192.168.1.10
# run on your PC

938 Mbits/sec ← near-gigabit, network is fine
82 Mbits/sec ← slow network, check cables/switch/Wi-Fi
⚠️If your NAS is on Wi-Fi, a single ethernet cable will likely double your transfer speeds immediately. Always use wired for a NAS.

High CPU — finding the culprit

A NAS CPU should mostly sit idle. Constantly above 50% means something is consuming it. Common culprits: media transcoding, RAID rebuild, or a runaway Docker container.

bash — find what is eating CPU
# See top consumers live (press q to exit)
$
top
PID %CPU COMMAND
1234 87.3 Plex Media Server ← transcoding without HW acceleration
5678 3.1 sshd

# Check Docker containers specifically
$
docker stats --no-stream
jellyfin 82.4% ← enable hardware transcoding in settings

# Check for RAID rebuild
$
cat /proc/mdstat
💡If Plex or Jellyfin is the culprit: go to Settings → Transcoder → enable Intel Quick Sync (or your GPU). CPU usage drops from 80%+ to under 10%.

Drive and CPU temperatures

Hard drives should run between 30–45C. Above 50C lifespan drops significantly. Here is how to check and what to do about it.

bash — check all temperatures
# Install lm-sensors for CPU temps
$
sudo apt install lm-sensors && sudo sensors-detect --auto
$
sensors
Core 0: +38.0C
Core 0: +74.0C ← warm, check fan is spinning

# All drive temps in one command
$
for d in /dev/sd?; do echo -n "$d: "; sudo smartctl -A $d | awk '/Temperature/ {print $10"C"}'; done
/dev/sda: 34C
/dev/sdc: 52C ← too hot, check airflow
⚠️Above 50C on a drive: check the case fan is spinning, make sure drives are not packed too tightly, and confirm the fan header is connected on the motherboard.

Related guides