CPU load too high. How to investigate?

Solution 1:

You seem to be seriously using a lot of swap there. You have a relatively small amount of memory allocated to cache/buffers.

Your %wa is at 49.5%. That value corresponds to the CPU waiting for I/O to complete.

I suspect you have that is or was using a large ammount of memory. But perhaps you also have something performing a lot of I/O as well.

Fire up iotop, and you might get a better picture of the I/O situation.

P.S. If you are not using ksplice, then you are almost certainly running a kernel with known vulnerabilities. 354 days of uptime is too long.

Solution 2:

Nothing wrong with your top.
MySQL database daemon is eating most of the CPU. You can press C to find the exact commands/instructions inside the top view.
If it is a surprise for you that your MySQL database is so busy then you need to investigate what is using it (webserver, application?). There are tools for this, including those provided by native MySQL packages.