Yes, I believe that the internal server error is just due to the failing check and doesn’t indicate a problem with anything else.
AFAIK the “last updated” column shows the last time that the health check changed status. (Admittedly, this definition of “updated” is somewhat misleading!) The health checks do indeed run more frequently.
For 3, I’m not a PG expert so I’m not great at troubleshooting this kind of thing (besides just connecting via SSH and running top), but since the checks say 44 open connections, I suspect it may just be due to load. One thing to try might be to check pg_stat_activity to look for any long-running queries that could be causing it, so something like
SELECT now() - query_start AS query_time, state, datname, query
FROM pg_stat_activity
WHERE state != 'idle'
ORDER BY query_time DESC;
There’s also the pg_stat_statements module that can help identify the most frequent queries and how much time they’re taking, but you’d have to install it first.