Hi Matt
We have had this issue since the beginning with horizon (and analyzer connection timing out). We handle this with a couple of scripts parsing the horizon and analyzer logs and restarting the services as appropriate when we encounter the trigger conditions.
I have created some gists to highlight these, they are run via cron every minute - the gists ARE examples only but they define the patterns. We also use monit for skyline services as well and these handle race conditions with monit - they are rhel base, so please note service/init differences etc.
Hope these help, they have worked for us since 20140114.
horizon -
https://gist.github.com/earthgecko/5588dc17c8ebe2a7c082analyzer -
https://gist.github.com/earthgecko/ec181cc95dbfce9a9bc6