I see quite a few instances of exceeding maxQueryThreads in the logs. Do you have a lot of concurrent activity on this instance?

I don't see the Query timeout error anywhere in your logs. If you can capture that error it may give you an indication of what's being run that's taking so long-- e.g. maybe you've got a query which misses your aggregates. You could then either tune the db for that query or build more aggregates.

On that note- it also looks like you're aggregate tables may be out of sync with their definition in your schema. There were a few errors like:

Unknown column 'W_SALES_AGG_DATA.AMOUNT' in 'field list'