2010-11-11 92 views
45

我们有一个部署到服务器的asp.net MVC应用程序,但是当服务器的请求过多时,客户端只会得到“503服务不可用”错误。
但是,如果我将应用程序部署到另一台服务器(较低的硬件配置),一切正常,甚至更多的要求它可以处理好。
我的问题是什么可能的配置可以导致以前的服务器只是抛出503错误? (这意味着请求没有达到我们的申请)。有什么可能导致“服务不可用503”错误?

+2

实际上有[很多可能的原因](http://www.microsoft.com/technet/prodtechnol/windowsserver2003/library/iis/55f71614-ef1b-4015-b9c8-a42c1e700c25.mspx?mfr=true)。 – 2010-11-11 05:17:27

+10

已关闭?了解部分或全部答案是否有用?堆栈溢出很奇怪。不得提供所有类型的信息,只有一种特定类型! ;) – 2014-07-03 08:11:51

+1

堆栈溢出的这种奇怪的活动是在我们的幕后。无论如何,这是我最喜欢的网站天才程序员在这个网站。 – 2014-10-01 05:09:48

回答

65

您的网页由应用程序池提供服务。如果您禁用/停止应用程序池,并且任何人尝试浏览该应用程序,您将获得服务不可用。它可因多种原因发生......

  1. 您的应用程序可能已崩溃[检查事件查看器,看看你可以在你的应用/系统日志中找到事件日志]

  2. 应用程序可能经常崩溃。如果应用程序池在5分钟内崩溃了5次[检查您的应用程序池设置以确保快速失败],则您的应用程序池将被IIS禁用,并且您将最终收到此消息。

无论哪种情况,问题都是您的工作进程失败,您应该从崩溃的角度对其进行故障排除。

What is a Crash (technically)... in ASP.NET and what to do if it happens?

3

主要是指这样的情况:并发请求数太多,并且进一步超过默认的1000个排队请求。这是有1000个或更多的排队请求到您的网站。

如果存在长时间运行的任务并因此备份请求队列,则可能发生这种情况(假设应用中没有错误)。

根据应用程序池的设置方式,您可能会看到这种情况。通常,应用程序池的过程模型有一个称为最大工作进程的项目。默认情况下,这是1.如果将其设置为大于1(通常最大为硬件上的核心数量的最大值),则可能不会看到发生这种情况。

只要注意,除非该网站非常繁忙,否则不应该看到这一点。如果这样做,它确实指向长时间运行的任务

+2

对不起Shiv。这是不正确的。 http://support.microsoft。com/kb/943891 – 2010-11-11 03:37:09

+0

什么是不正确的? – 2010-11-11 03:38:45

+5

你在说什么会导致服务器太忙的错误。问题是服务不可用。这两个问题是完全不同的。检查我的答案。 – 2010-11-11 03:39:57

2

最近我们遇到了这个错误,根本原因竟然是在IIS服务器上过期的SSL证书。负载平衡器(我们的Web层的前面)发现SSL过期,而不是将HTTP流量处理到其中一个IIS服务器,而是开始显示此错误。所以基本上IIS无法服务器请求,原因完全不同:)

5

如果服务器没有足够的内存也会导致此问题。这是我与Godaddy VPS的亲身经历。

相关问题