Pit*_*DBA 5 asp.net azure azure-web-roles asp.net-mvc-3
我们的前端MVC3 Web应用程序正在使用AsyncController,因为我们的每个实例都在为数百个长时间运行的IO绑定进程提供服务.
由于Azure会在一些预先确定的时间间隔后终止"非活动"http会话(这似乎取决于您阅读的网站),我们如何保持连接活动?
我们的客户必须保持联系,我们的流程将持续30秒到5分钟或更长时间.我们如何保持客户端连接/活动?我最初想过在Async方法上有一个超时,只是用几个字节的输出来命中Response对象,有点像分块响应,然后再返回等待一些.但是,我不认为这会起作用,因为MVC3正在处理IIS线程与异步响应的连接,异步响应在那时已经呈现了一个视图.
我们如何在AsyncController上运行一个非常长的进程,但是Azure负载均衡器不能断开客户端的连接?向呼叫者发送立即响应,并要求呼叫者轮询或检查其他资源URL是不可接受的.
Azure负载均衡器空闲超时为4分钟.您是否可以尝试在客户端配置TCP keep-alive少于4分钟,这应该保持连接活动?
另一方面,长时间保持每个客户端的连接是相当昂贵的.这将限制每台服务器可以处理的客户端数量.此外,我认为如果IIS认为需要连接来提供其他请求,IIS仍可能决定关闭连接而不管保持连接.
| 归档时间: |
|
| 查看次数: |
2471 次 |
| 最近记录: |