我在多线程环境中使用WCF时遇到问题。
我正在运行120个任务,每个任务都使用城堡注入WCF客户端的单例实例。客户端作为Windows服务托管。
目标
在1秒内进行350多次API调用,响应时间为200-250ms。
服务安装程序
container.Register(Component.For<IMyWcfClient>().ImplementedBy<MyWcfClient>().LifestyleSingleton());
任务
public class A
{
private client;
public A(IMyWcfClient client)
{
this.client = client;
}
public void Call()
{
client.MyMethod(); //takes up to 25 seconds
}
}
现在,当我创建120个任务来并行调用我的方法时,我遇到了性能问题。
每次通话需要大约25秒,而在网络上花费的时间大约为250毫秒。 我不明白我在哪里松了24,8?如何加快性能。 Fyi,如果我只测试60个线程,我就不会看到这种延迟。
WCF诊断:
活动边界:11:01:32
写了一条消息:11:01:56
通过频道发送消息:11:01:56
...
活动边界:11:01:56