Could be heavy DB queries, could be file indexes rebuilding.. could be a number of things. Without knowing every specific detail about what's installed and running on your server this is impossible to answer.
BUT here's how you can find out for yourself.. next time it does this, get on the box and run
sudo watch "ps aux | sort -nrk 3,3 | head -n 5"
to monitor the top 5 (number dictated by that last param) processes utilizing CPU.
Output will look something like this:
root 5438 0.1 0.1 100448 8952 ? Sl Jun16 43:38 /usr/bin/python /usr/bin/fail2ban-server -b -s /var/run/fail2ban/fail2ban.sock -p /var/run/fail2ban/fail2ban.pid
www-data 5414 0.0 0.0 7856 4828 ? S Jun16 2:20 nginx: worker process
www-data 5413 0.0 0.0 7852 4980 ? S Jun16 2:09 nginx: worker process
www-data 5412 0.0 0.0 7852 4836 ? S Jun16 2:21 nginx: worker process
www-data 5410 0.0 0.0 7852 4972 ? S Jun16 2:07 nginx: worker process
That will auto-refresh every 2 seconds until you hit Ctrl-C to exit the watch process. CPU utilization percentage is the third column.