单例对象的可伸缩性问题
大家好,
我们在Windows服务中托管了一个单例对象。 它工作正常,直到同时客户端请求的数量超过100左右的一些神奇数字。 在此之后,只有在释放当前连接之一时,所有新呼叫才会被排队并逐个处理。
如果有人能告诉我们如何摆脱这种限制,我们将非常感激。
当它发生时,线程数(根据任务管理器)大约为120,因此线程池不应该是一个问题(如果我正确理解,有2个CPU,最多可构成512个线程)。 还有足够的可用内存(该进程分配大约200-300 MB,还有超过1GB的可用内存)
我们使用.Net framework 3.5
下面是app.config的片段。
<configuration>
<system.runtime.remoting>
<application>
<service>
<wellknown type="CompanyName.Server.ServerStub, MyServer" objectUri="MyServer" mode="Singleton"/>
</service>
<channels>
<channel port="3210" ref="tcp">
<serverProviders>
<formatter ref="binary" typeFilterLevel="Full"/>
</serverProviders>
</channel>
</channels>
</application>
</system.runtime.remoting>
</configuration>
答案 0 :(得分:0)
总是只有1个单例对象。它处理所有请求一个接一个。在大约100个请求之后,你可能会注意到一些缓慢因为某些缓冲区正在填满。