MySQL: How to troubleshoot when simple queries are not returning anymore?
You are hardly using MyISAM, so ignore the issues about MyISAM.

Ignore the recommendation to OPTIMIZE and 'fragmented'; that tool always says that, even if it is of no use (which is usually the case).

Joins without indexes -- you are better off looking at any 'slow' queries.

Find the slow queries.  First try SHOW FULL PROCESSLIST when it "hangs" to see if you can catch a query.  Another thing to do is to turn on the Slowlog, run for a day, then use pt-query-digest to summarize the slowlog.  Let's look at the first couple of queries.

"Sort aborted" sounds like a poorly written query; the PROCESSLIST should show it before killing it.  Perhaps it is a JOIN without an ON.