在本地测试,使用WebServiceHost 开启服务。
本地并发了100个线程 访问服务。从服务端传回的数据来看。服务端接收数据延迟了。
也就是说假如所有线程都是在
1-3秒内把数据都发送到服务端。
总共耗时3秒。
服务端的服务,获取到数据确是在1-20秒之间。
也就是最晚的第20秒才接收到服务。
服务端也已经设定ConcurrencyMode = ConcurrencyMode.Multiple
使用的是并发模式。
所以猜测是阻塞到什么地方了。求解
感觉是他的默认并发线程数达不到?默认并发线程数上限是多少?
ConcurrencyMode.Multiple thread 这个关键词可以检索很多
谢了。设置一下ThreadPool好了点
请确保你的实例化模式不是PerCall。
具体原因看下面:
并发的使用与实例化模式有关。在 PerCall 实例化过程中,与并发没有关系,因为每个消息都由一个新的 InstanceContext 处理,因此 InstanceContext 中处于活动状态的线程永远都不会超过一个。
会话和 InstanceContext 根据协定中 SessionMode 枚举的值和服务实现上的 System.ServiceModel.ServiceBehaviorAttribute.InstanceContextMode 属性的组合进行交互,该组合控制着通道和特定服务对象之间的联系。
是single模式。貌似framework默认是0.5秒启动一个线程,所以设置一下ThreadPool就好多了。
相当感谢