Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有工作线程限制的WCF_C#_Multithreading_Iis_Com - Fatal编程技术网

C# 具有工作线程限制的WCF

C# 具有工作线程限制的WCF,c#,multithreading,iis,com,C#,Multithreading,Iis,Com,我已经围绕一个旧的COM/OLE服务器实例编写了一个.net包装器。它是一个有状态的包装器,需要几个初始化调用,然后是最后的“go/calculate调用” 最后一个调用创建一个类的新实例,然后使用System.Threading.thread创建一个新线程,该线程创建COM实例并使其能够单独运行到IIS工作线程,随后调用以检查状态并最终获得结果 问题是,当我尝试创建20多个并发实例时,会出现内存不足异常。我尝试过各种调整——创建多个工作线程没有帮助,因为我相信状态的本质。我已经试过很多了 无济

我已经围绕一个旧的COM/OLE服务器实例编写了一个.net包装器。它是一个有状态的包装器,需要几个初始化调用,然后是最后的“go/calculate调用”

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

问题是,当我尝试创建20多个并发实例时,会出现内存不足异常。我尝试过各种调整——创建多个工作线程没有帮助,因为我相信状态的本质。我已经试过很多了

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


有人知道增加IIS insatnce可以产生的工作线程数的方法吗?

听起来您可能会从使用web garden中受益。将应用程序池设置中的最大工作进程数设置为>1

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


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

否-正如我所说,我可以直接在同一个框中进行调用,并获得150多个实例。只有当呼叫作为服务进行时,我才获得20的硬限制。OOM异常在哪里抛出?那是什么组件?什么调用堆栈?服务器进程是32位的吗?您的其他测试进程可能是64位的吗?在创建“Activator.CreateInstancerCertWBType”时会引发异常。它是一个64位的框,但WCF服务是32位的,就像它正在实例化的COM/OLE服务器一样。在抛出异常时,已经创建了一个新线程。异常通常会导致当前整个IIS工作进程停止。在19个实例中,IIS工作进程的私有字节值是多少?让我们确定这不是关于记忆。好的,听起来很合理。我怎么检查?限制为0,即无限制。。。。