HTTP 错误 503-服务不可用(如何修复?)

HTTP 错误 503-服务不可用(如何修复?)

我有一个用于下载移动文件的网站,并且我的网站上有很多用户。有时我会出现以下错误:
HTTP Error 503 - Service is unavailable

1-那么为什么会发生这个错误以及这意味着什么?

2-据我所知,当 appache 超载时,它会自行释放,但是 iis 呢?

我怎样才能在我的服务器中设置一些限制(我可以远程访问我的服务器)以防止此错误发生?

a.限制下载速度是否能有效防止错误发生?
我该怎么做?
Squid 是否适合这项工作,或者我可以使用另一个 iis 扩展来完成这项工作。

b.限制下载带宽是否能有效防止错误发生?
我该怎么做(使用 iis 或其他扩展)?

在 iis 的右侧 -> 配置区域 -> 我发现了一些限制。
这些限制是什么意思,我可以使用它们来让我的服务器始终保持活动状态吗?

编辑:
查看 Windows 事件查看器 -> 自定义视图 -> 服务器角色 -> Web 服务器(IIS)后,我发现该区域没有错误。
但有很多警告和信息。
最新的警告和信息如下:
警告

为应用程序池“ASP.NET 4.0 (Integrated)”提供服务的工作进程“2408”未能在规定时间内停止协议“http”的侦听器通道。数据字段包含错误编号。

警告

为应用程序池“ASP.NET 4.0 (Integrated)”提供服务的进程在关闭期间超出了时间限制。进程 ID 为“6764”。

警告

为应用程序池“ASP.NET 4.0 (Integrated)”提供服务的工作进程“3232”未能在规定时间内停止协议“http”的侦听器通道。数据字段包含错误编号。

警告

为应用程序池“ASP.NET 4.0 (Integrated)”提供服务的进程在关闭期间超出了时间限制。进程 ID 为“3928”。

提前
致谢

答案1

我猜你达到了 IIS 可用的线程数上限。IIS 会根据以下情况分配一定数量的线程:IIS 版本默认情况下,配置设置取决于服务器中的处理器/核心数量。您可以根据需要进行专门调整。

您可能会耗尽线程,因为您将下载流传输到客户端。如果您以同步方式执行此操作,您的网站最终将耗尽线程,因为每个线程将被单个下载占用。如果可能,您应该修改下载代码以异步工作,例如将其实现为异步 HTTP 处理程序

编辑:发生 503 错误是因为 IIS 的线程不足以处理其他请求,因此无法处理该请求。事件日志中的错误就是这种情况的结果,因为 IIS 试图通过退出/回收应用程序池来释放线程和资源,因为它没有响应内部“活动”ping。

限制下载速度实际上会加剧问题,因为您将更快耗尽线程。只有在耗尽总带宽时才应限制下载速度,否则就让客户端尽可能快地下载。

唯一真正能让您的服务器扩展的解决方案是更改代码,以便异步处理下载。或者更改解决方案,让下载由 IIS 本身的静态文件处理程序处理,例如通过使用重写规则或自定义重写提供程序。如果不了解有关您的应用程序的更多详细信息,很难再说下去。

答案2

如果您的应用程序池因应用程序的错误而失败,并且错误数量超过了 iis 中分配给您的应用程序的最大故障限制,则会出现“HTTP 错误 503 - 服务不可用”错误。

解决方案

  1. 打开 IIS 管理器。
  2. 找出您的应用程序池并单击您的池的高级设置。
  3. 一旦您单击高级设置,它将打开一个窗口。
  4. 在“快速故障保护”下,您可以找到“最大故障”,将其从默认值 5 增加到 50。

修改高级设置后,回收应用程序。

答案3

没有特定的方法可以解决这个问题,顺便说一句,我们可以尝试一些简单的方法通过以下方法修复 503 错误。

  1. 再次打开 URL
  2. 重启路由器
  3. 稍后再试
  4. 如果需要访问,请联系网站所有者。

这里有一些关于Http 错误 503 修复,有需要的话可以去参观一下。

答案4

远程桌面进入您的服务器,
检查您的“SQL 服务器报告服务 (MSSQLSERVER)”服务正在运行。
如果没有,
请启动它。

相关内容