【问题标题】:Azure webapp load balance time out issue,getting HTTP status of 500 and sub status of 121Azure webapp 负载平衡超时问题,HTTP 状态为 500,子状态为 121
【发布时间】:2016-03-17 02:53:54
【问题描述】:

我们有一个加载和分析 excel 数据并向用户报告的网站。现在分析 excel 数据的过程平均需要 5 分钟以上(取决于数据),在此期间客户端服务器通信似乎闲着。

此网站作为 webapp 托管在 Azure 上,根据以下链接,Azure 似乎存在负载平衡超时

https://azure.microsoft.com/en-us/blog/new-configurable-idle-timeout-for-azure-load-balancer/

在此链接中提到

在其默认配置中,Azure 负载均衡器有一个“空闲 超时”设置为 4 分钟。

这意味着如果你的 tcp 或 http 有一段时间不活动 会话超过超时值,不能保证 保持客户端和您的服务之间的连接。

由于这个问题,最终用户不断获得 500 的 HTTP 状态和 121 的子状态。

目前我们无法重新架构系统,也无法更改部署为 webapp。

我们已尝试按设定的时间间隔向服务器发送 Jquery ajax 请求,但这似乎不起作用。

上面的文章谈到了使用ServicePoint.SetTcpKeepAlive()保持TCP会话活跃,但是我们不知道如何在MVC web应用程序中实现。(网上也没有找到任何示例)

我们确实需要解决这个问题,因为这可能会成就或破坏我们的项目。因此,我们非常感谢您的帮助。特别是在 MVC 应用程序中使用 ServicePoint.SetTcpKeepAlive() 的任何工作示例代码都非常受欢迎

提前致谢。

更新

我尝试了 Irb 提到的内容,但仍然没有运气。正如您在给定的图像中看到的那样,我反复调用 KeepSessionAlive。每次调用 KeepSessionAlive 时,我都会访问会话变量,确保不会使会话超时。但仍然是调用保存返回 500。同样,这只发生在 Azure 中

【问题讨论】:

    标签: c# asp.net-mvc azure iis azure-web-app-service


    【解决方案1】:

    返回 json 的 web api 方法并不总是让会话保持活动状态。如果您请求调用会话的内容,那么您可以在定时间隔从客户端调用它。像使用 jpeg Web 处理程序请求图像这样简单的方法可以工作。 Here 是指向类似内容的链接。

    【讨论】:

    • 感谢您的回复。我试过了,但还是不行。我仍然得到 HTTP 代码 500
    • 如果您能想出一种方法来执行整个页面刷新,然后重新开始您的任务,那么这将是解决它的最简单方法。统计任务并每 x 分钟刷新一次页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    • 2011-01-01
    • 2014-01-08
    • 2019-10-27
    • 2022-01-07
    相关资源
    最近更新 更多