WCF与工作线程限制

时间:2014-09-30 13:17:27

标签: c# multithreading iis com

我在旧的COM / OLE Server实例周围编写了一个.net包装器。它是一个有状态的包装器,需要一些初始化调用,然后是最后的“去/计算调用”。

此最终调用创建一个类的新实例,然后使用System.Threading.Thread创建一个新线程,该线程创建COM实例并使其能够单独运行到IIS工作线程,随后调用检查状态和最终得到结果。

问题是,当我尝试创建超过20个并发实例时,我会遇到内存不足异常。我尝试了各种调整 - 创建多个工作线程并没有帮助,因为有状态性(我相信)。我尝试了很多这些

http://www.codeproject.com/Articles/133738/Quick-Ways-to-Boost-Performance-and-Scalability-of

无济于事。在我的压力测试器中,我尝试直接实例化包装类而不是通过WCF服务,我可以运行>在我开始遇到问题之前的150个实例。

有没有人知道如何增加IIS无法生成的工作线程数?

1 个答案:

答案 0 :(得分:0)

听起来您可能会因使用网络花园而受益。将应用程序池设置中的最大工作进程设置为> 1。

他们可以在这样的情况下帮助增加,但理想情况下,您应该查看代码以识别和优化瓶颈。

https://serverfault.com/questions/81689/web-gardens-are-they-good-or-bad-or-what

请注意,缺点是:在应用程序池中没有维护proc会话状态,如果使用asp http缓存,每个进程都有自己的缓存副本。