IIS and Parallel.ForEach

4

我正在使用Parallel.ForEach在托管在IIS中的WCF服务上。

据我所知,对于并行循环中的每个任务,都会打开一个线程。

但是IIS限制了可以打开的线程数量。我认为它是20。

所以我的问题是:在IIS进程上使用Parallel.ForEach是否推荐?

1个回答

4
据我所知,在使用TPL时在IIS中会存在一些问题。
首先,IIS在其线程池中没有硬性限制。这实际上取决于线程正在做什么(CPU绑定、IO绑定等)。因此,仅仅线程数量并不那么重要。
其次,据我了解,TPL将从线程池中获取线程。因此,实际上你正在占用本来可以用来服务请求的线程。同样地,这可能会对你消耗的流量产生不良影响。
第三,IIS应用程序池会回收。当这种情况发生时,据我所知,IIS会冻结线程的状态并将它们移动到另一个进程中。这可能会对线程操作产生意想不到的影响。
通常,你希望使用TPL(Parallel.ForEach),是因为你有一个长时间运行的过程。对于长时间运行的过程,最好调用另一个主机(Windows服务)来完成繁重的工作。例如,在Windows服务中,你可以更好地控制如何管理线程。
希望这能帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接