【问题标题】:Getting http response exactly after 3.8 minutes with status code 500 OK3.8 分钟后获得 http 响应,状态码为 500 OK
【发布时间】:2015-09-11 09:14:31
【问题描述】:

我正在向托管在 Azure 上的 Web 应用程序发送一个 http 请求,该请求需要 1 个多小时才能完成。在 Chrome 中发送请求后,我使用 F12 检查网络状态。请求每次返回状态码500 OK,使用时间正好是3.8分钟。
我已经远程调试了这个网络应用程序,发现代码运行得非常好,没有一个异常指示 500 OK 错误,但浏览器只返回 500 OK。
我也google了很多。但是由于奇怪的状态码“500 OK”,我找不到任何有用的东西。 3.8 分钟似乎是一些与时间相关的设置,所以我尝试在 Web.config 的 httpRuntime 标记中设置 executionTimeout,也尝试了 ServicePointManager.SetTcpKeepAlive,这些都不起作用。 有没有人遇到过这样的情况?

【问题讨论】:

  • 如果正确请标记为答案。
  • 谢谢你的建议,我会试试看,但为什么3.8分钟和500 OK?
  • 如果不看你的实际代码就很难判断。您可以发布它以及它的运行位置吗?

标签: http azure web


【解决方案1】:

这是您的 Azure 架构设计的问题。任何需要超过 5 秒才能完成的进程都应在不同的服务器上进行处理。

您的架构应该包括 1. 带有休息端点的 Azure Web App 2. Azure WebJob 绑定到队列 3. Azure 存储队列(输入) 4. Azure 存储 Blob(输出)。

传入的请求应该将消息放入带有适当参数的队列中。 webjob 应该绑定到队列中以观察消息。收到消息后,它会进行处理,然后将响应放在输出 blob 上。

您的应用程序应发出“处理完毕”请求,该请求会在 blob 中查找请求的预期 ID。

要密切关注进度,您可以在表存储或 SQL 中保留一个表,以密切关注进程状态(待定、处理、完成、已接收)。

此架构将使您的应用程序能够显着更好地扩展并提高您的性能并提供适当的响应。

希望有帮助

【讨论】:

    猜你喜欢
    • 2019-02-04
    • 2011-12-21
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    相关资源
    最近更新 更多