Thanks for the thoughtful description of your situation, Josal. We appreciate your trust and are working very hard to continue to deserve it!
Regarding unexpected timeouts, what we've seen is that they are almost always a result of what I call a wedged process. I blogged about this a couple years ago: http://adam.heroku.com/past/2008/6/17/battling_wedged_mongrels_with_a/ What happens is that one request does something that locks the process (like hitting a remote API that never returns, or calling a method with an infinite loop bug). Once this occurs, the process can't serve any future requests, and all requests sent to it will time out - even simple requests for non-dynamic pages or static assets not already in the Varnish cache. The only solution to the wedged process problem is to restart the process. This is not a problem unique to Heroku in any way; however, running on Heroku gives you fewer options for live introspection of the processes' behavior. For example, if you hit this problem on Slicehost you might install the mongrel_proctitle plugin in order to find out which request the process is stuck on. We're working on expanding the number of options you have for diagnosing these situations. In the meantime, your best options are: - Use "heroku restart" to reboot your processes when you suspect one is wedged. - Use the SystemTimeout method described in the blog post above, with a timeout of 29 seconds or less. Unfortunately this still doesn't catch every kind of wedging (certain kinds of system calls won't be trapped by it), but it can catch many of them. - Use our new logging system, currently in private beta, for more detailed introspection of requests. I'll email you privately with the details. -- You received this message because you are subscribed to the Google Groups "Heroku" group. To post to this group, send email to her...@googlegroups.com. To unsubscribe from this group, send email to heroku+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/heroku?hl=en.