我们有一个 asp.net MVC 应用程序部署到服务器上,但是当对服务器的请求太多时,客户端只会收到“503 服务不可用”错误。
但是,如果我将应用程序部署到另一台服务器(硬件配置较低),一切正常,甚至可以处理更多请求。
我的问题是什么可能的配置会导致以前的服务器抛出 503 错误?(这意味着请求没有到达我们的应用程序)。
4 回答
您的网页由应用程序池提供服务。如果您禁用/停止应用程序池,并且任何人尝试浏览该应用程序,您将获得服务不可用。它可能由于多种原因而发生...
您的应用程序可能已经崩溃 [检查事件查看器,看看您是否可以在应用程序/系统日志中找到事件日志]
您的应用程序可能会非常频繁地崩溃。如果一个应用程序池在 5 分钟内崩溃 5 次 [检查您的应用程序池设置是否快速失败],则您的应用程序池被 IIS 禁用,您最终会收到此消息。
无论哪种情况,问题都是您的工作进程出现故障,您应该从崩溃的角度对其进行故障排除。
如果服务器没有足够的内存也会导致这个问题。这是我个人对 Godaddy VPS 的体验。
这主要意味着有太多的并发请求,而且它们超过了默认的 1000 个排队请求。也就是说,您的网站有 1000 个或更多排队请求。
如果有长时间运行的任务并因此备份请求队列,则可能会发生这种情况(假设您的应用程序中没有故障)。
根据应用程序池的设置方式,您可能会看到这种情况。通常,应用程序池的进程模型有一个名为 Maximum Worker Processes 的项目。默认情况下为 1。如果您将其设置为大于 1(通常最多为硬件上的最大内核数),您可能不会看到这种情况发生。
请注意,除非该站点非常繁忙,否则您不应看到此内容。如果你这样做,它真的指向长时间运行的任务
我们最近遇到了这个错误,根本原因原来是 IIS 服务器上的 SSL 证书过期。负载均衡器(在我们的 Web 层前面)发现 SSL 已过期,而不是处理 HTTP 流量到其中一个 IIS 服务器,而是开始显示此错误。所以基本上 IIS 无法服务器请求,原因完全不同:)