Mysql causing high load average with large amount of server resources left
Are you using MyISAM?  Or InnoDB?  Or both?


  [!!] Query cache is disabled


This is "good", not "bad".


  [!!] Table cache hit rate: 0% (400 open / 78K opened)


How many tables to you have?  Thousands?  Please elaborate on why so many.  (This is usually a design flaw.)  Meanwhile, increase table_open_cache to, say, 2000.  What MySQL version are you running?  Set table_open_cache_instances = 8 if it is a new enough version.


  [OK] Highest usage of available connections: 36% (294/800)


Yeah that is "OK" in one sense.  But in another sense, 294 simultaneous connections is a lot.  Please elaborate.  Perhaps they are failing to disconnect?


  [--] Up for: 9h
  [OK] Slow queries: 0% (5K/42M)
  load average is about 3~4
  long_query_time                 = 1


Those sort of contradict each other.  "Load average", in my opinion, is not very useful.  Do you have a measure of CPU utilization?  Still, if CPU is high, why aren't there more queries taking more than 1 second?  Anyway, please run pt-query-digest and let's see the first couple of queries it finds.  We may be able to speed them up; that may speed up the system.

Update

Thanks for the update.

SELECT COUNT(*) on InnoDB tables is proportional to the size of the table, so it will get slower and slower.  The slowlog will point out which of them are run often enough to be a nuisance.

Between the SSDs and sufficient caching (key_buffer, buffer_pool, table_open_cache) plus innodb_flush_log_at_trx_commit  = 2, you have probably minimized the I/O.  Now to focus on slowlog.