Is so many restarts normal?
Yes, it can happen in a certain month, you need to get on SQL Server in high availability mode to really make it work.
Yes, it costs an arm and a leg .; (
What is your experience in such an environment on Azure? Some months are really good, some months are bad, depending on your cluster and the data center you are in. MS mixed the range of our equipment where there are data centers. This does not mean that they work on old laptops in some data centers, but, in my experience, new data centers have a better set in them and, therefore, restart less. I use USA East.
What can I do to minimize this downtime?
High availability with a witness is the only way to provide you with accessibility in a virtual machine and yes, it costs hands and feet.
Other serious options. Cache cache. You must use the computer cache, azure cache and try to minimize your calls in the database. This can reduce your chat application and allow you to return to SQL Azure, but it can give you enough opportunity to recover from a failure.
Queues Queues will help you restore the application and give you a message that we are working on it.
Use SQL Azure to switch to another resource. Data synchronization using SQL Azure Sync from Premise (not sure if this works with Express) for SQL Azure and enter the application code to get a connection error and switch to another resource.
Look at using other parts of Azure for part of your application to reduce the number of incoming calls in SQL, i.e. Can you move stuff to table storage?
HTHS gives you some ideas.