【发布时间】: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