为什么捕获的exception会导致IIS甚至整个Windows Azure服务器失败?

我有一个Windows Azure应用程序(networkingangular色),我遇到了严重的问题。

如果我的应用程序连接到的数据库(在这种情况下,SQL Azure瞬态错误)有问题,则会在我的应用程序中引发许多exception。 抛出的每一个exception都被捕获并很好地处理,但IIS服务最终会closures,甚至更糟糕的是,整个Webangular色变得无法响应。

例外数很高,每秒30-100次。

我的应用程序在3个Webangular色实例上运行愉快,同时遇到这个问题,我已经升级到10个实例,因为我确定我读到的是捕获的exception在资源上相当沉重,但这没有什么区别。

在事件日志中没有错误或(从我可以确定的)有用的警告。

..只是重复,我可以保证没有未捕获的exception发生。

这听起来像正常的服务器行为?

如果你确信这是例外,StackOverflow,但基于我所知道的:不是直接的。 只有未处理的exception会导致进程直接终止。

但是你描述的症状不是这样 – “IIS服务最终会closures” – 你能明确你的意思吗?

例外可能导致非常糟糕的performance,30-100 /秒似乎是一个非常可怕的; 如果他们在GC代中生存下来,他们可能只是将你的地址空间分割开来,但是不会徘徊(检查内存泄漏吗?)

“或者更糟糕的是,整个networkingangular色变得没有反应” – 你的意思是VM实例? 这听起来更像是资源泄漏,没有得到清理(内存或外部资源)。

经过进一步的调查,这不是由例外引起的,尽pipe有大量的exception会影响性能,但这个问题仅仅是导致exception的数据库问题也增加了每个请求的处理时间,请求不能被处理的速度比进来的要快,这导致他们build立起来,直到IIS会说“没有更多!