如果用户已离开请求页面,如何终止响应线程

时间:2016-06-22 16:44:10

标签: c# asp.net-mvc multithreading

我们已经实现了Facebook的BigPipe框架的MVC版本,并且正在遇到内存峰值,这些内存峰值似乎与BigPipe的线程挂起有关。这些尖峰导致我们的生产机器每隔几个小时重新启动一次。如果您不熟悉BigPipe,这是基本要点:

BigPipe is a fundamental redesign of the dynamic web page serving system. The general idea is to decompose web pages into small chunks called pagelets, and pipeline them through several execution stages inside web servers and browsers.

它基本上允许客户端在pagelet可用时请求和呈现页面,而不是等待整个响应返回。这是通过从服务器端的多个线程多次刷新响应来完成的。我们认为问题可能是由访问我们的信息中心页面(使用bigpipe)但在提供所有pagelet之前离开页面的人造成的。我们相信这可能会使这些线程无法实际发送响应。

如果客户端停止等待响应,是否有方法可以终止代码执行?或者有没有办法在挂起的线程上设置超时?

1 个答案:

答案 0 :(得分:0)

用于检测此情况的唯一提示(我知道)正在查询Reponse.IsClientConnected