首页 新闻 搜索 专区 学院

WCF 并发延迟问题

0
悬赏园豆:100 [已解决问题] 解决于 2013-09-27 09:29

 

 

其中Service是WCF服务端,Click是客户端。

都是在本机上执行,其中客户端开20个线程,每个线程各开一个实例来连接Service.

可以从上图时间上看出来,在客户端都是同时发起请求,但到达服务端的时间却有延迟。

并发是并发了,但却有延迟。

 

现在的问题就是如何才能实现客户端发送的同时服务端能同时接收到?也就是并发无延迟的效果。

 

 

anitzlz的主页 anitzlz | 初学一级 | 园豆:112
提问于:2013-09-25 16:31
< >
分享
最佳答案
0

不知道你服务端的并发模型,我猜可能是Multiple的,这意味着每个客户端代理的请求都可能会在不同的线程上执行,也就是说WCF服务端会先从线程池中拿出一个线程,然后处理请求,再放回去,问题的关键在于默认线程池里面的线程是有限的,高并发的情况下线程池需要补充线程,记得FrameWork默认线程池创建线程的行为是每0.5秒创建一个新线程,这意味着,如果同时需要20个线程,那么花费在创建线程上的时间最多要 20*0.5=10秒.记得线程池是有个API可以设置最小线程数的,ThreadPool.SetMinThreads()应该可以缓解你说的这种延迟效果.

收获园豆:90
garry | 菜鸟二级 |园豆:495 | 2013-09-26 17:56

谢谢,现在确实是这样,我修改后可以看到立即的效果·

anitzlz | 园豆:112 (初学一级) | 2013-09-27 09:27
其他回答(5)
0

HTTP 还是 TCP ?

收获园豆:10
Launcher | 园豆:45045 (高人七级) | 2013-09-25 17:07

TCP

支持(0) 反对(0) anitzlz | 园豆:112 (初学一级) | 2013-09-26 13:57

@anitzlz: 简单贴下你的代码,主要是 servicebehavior 和 operationbehavior。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2013-09-26 17:58

@Launcher: 谢谢您的关注,问题已经找到了·是服务端线程的问题·

支持(0) 反对(0) anitzlz | 园豆:112 (初学一级) | 2013-09-27 09:28
0

如果涉及到sql数据库查询的,肯定又延期的,我们要做的是尽量要避免延迟时间在1s以内,超出1s就不行

夔牛不哭 | 园豆:220 (菜鸟二级) | 2013-09-26 11:26

没有任何操作动作,我就是一个测试·从客户端发出到服务端接收为何会有延迟

支持(0) 反对(0) anitzlz | 园豆:112 (初学一级) | 2013-09-26 13:58
0

直接用TCP

【秦时明月】 | 园豆:851 (小虾三级) | 2013-09-26 13:17

只能用WCF来实现的

支持(0) 反对(0) anitzlz | 园豆:112 (初学一级) | 2013-09-26 13:59
0

怎么实现的,请教了!

天宝爱人 | 园豆:202 (菜鸟二级) | 2016-05-16 21:25
0

请问博主怎么解决的?

.NETHelper | 园豆:104 (初学一级) | 2020-06-15 13:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册