Check your web server
Tail your access log with tail -f /var/log/nginx/access_log and stick around for a bit, if lines are screaming past your screen that could mean someone is hammering the site, if that's the case, there is almost always a reason why (security vulnerability scanning, compromised plugin, etc), drop the -f and replace with -n 100 and find a pattern, remove/lock down whatever they're after.
Check your mysql slow query log
Enter SET GLOBAL slow_query_log = 'ON'; at the mysql prompt. DONT FORGET to turn slow_query_log back off when your done investigating, just change ON to OFF in that same query.
Then SET GLOBAL long_query_time = X; Where x is how many seconds, start low (1,2) and filter higher if you have too many results.
You can change where the log file goes if needs be.
SET GLOBAL slow_query_log_file = '/var/lib/mysql/hostname-slow.log';
Misc
-
Make sure your server isn't accessible via IP (i.e. Networking Enabled); if it is; there is chance someone is hammering the sql server in attempt to brute force it.
-
If the server CPU is still spiking because of mysql and you can ssh in run SHOW FULL PROCESSLIST in mysql for near the same thing as the query log but you should get a full read out of any possible queries being ran.
-
If possible for your site use, something like https://wordpress.org/plugins/wp-super-cache/ will render the HTML via PHP and then keep a copy so any further requests don't need to hit the database each time.