我们已经实现了Facebook的BigPipe框架的MVC版本,并且正在遇到内存峰值,这些内存峰值似乎与BigPipe的线程挂起有关。这些尖峰导致我们的生产机器每隔几个小时重新启动一次。如果您不熟悉BigPipe,这是基本要点:
它基本上允许客户端在pagelet可用时请求和呈现页面,而不是等待整个响应返回。这是通过从服务器端的多个线程多次刷新响应来完成的。我们认为问题可能是由访问我们的信息中心页面(使用bigpipe)但在提供所有pagelet之前离开页面的人造成的。我们相信这可能会使这些线程无法实际发送响应。
如果客户端停止等待响应,是否有方法可以终止代码执行?或者有没有办法在挂起的线程上设置超时?