首页 新闻 会员 周边 捐助

WCF客户端调用响应延迟

0
悬赏园豆:50 [已解决问题] 解决于 2016-03-10 10:44

大家好,我写了一个WCF服务,平时调用响应都挺快的,由于我有时操作要上传很多的数据并且放入内存中计算,就在数据量大的时候发现响应有延迟了(并不是方法内部处理的慢,而是根本就没有进入方法,感觉网络延迟一段时间进入服务方法的一样),有的时候要延迟100毫秒或者更多,我当时想的是不是调用比较多出现请求排队的情况了呢,于是设置服务InstanContextMode为PerCall,ConcurrencyMode为Multiple,而且在Client端用Chanel获取远程代理A以后也先执行了((ICommunication)A).Open()方法再调用具体的操作,但是问题依旧啊,系统比较繁忙的时候依旧有延迟,哪位遇到过这种情况或有思路指点一下呗,在此先行谢过了

WCF
拜门求学的主页 拜门求学 | 初学一级 | 园豆:159
提问于:2016-03-08 16:48
< >
分享
最佳答案
0
<serviceThrottling maxConcurrentCalls="16" maxConcurrentSessions="10" />
  1. maxConcurrentCalls :最大并发数,默认为16
  2. maxConcurrentSessions :最大的会话数
收获园豆:50
Jaryleely | 菜鸟二级 |园豆:367 | 2016-03-08 17:30

另外还可以在调用方法前后加入跟踪日志,看看是不是方法的问题。

Jaryleely | 园豆:367 (菜鸟二级) | 2016-03-08 17:32

首先,谢谢您的回复,不过这个我已经设置了,设置的值都是2000,问题还是一样,下面是我设置的代码:

host.Description.Behaviors.Add(new ServiceThrottlingBehavior()
{
MaxConcurrentInstances = 2000,
MaxConcurrentCalls = 2000,
MaxConcurrentSessions = 2000
});

拜门求学 | 园豆:159 (初学一级) | 2016-03-08 17:32

@Jaryleely: 这个不是方法的问题,方法内部我都加了时间计算的,整个方法挺简单,连一毫秒不到就执行完了,感觉还是卡在进入方法的时候,刚才试了一下方法内部执行占了1ms,但client端来回共用了304ms

拜门求学 | 园豆:159 (初学一级) | 2016-03-08 17:36

@拜门求学: 这么说的话,是你传输效率的问题。

几个建议:

1,将数据压缩之后进行传输

2,分段传输

3,设置相关传输参数:

客户端:

<binding name="BasicHttpBinding_WcfService" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">     

服务器端:

<binding name="LargeDataTransferServicesBinding" maxReceivedMessageSize="2147483647"  
messageEncoding="Text" transferMode="Streamed" sendTimeout="00:10:00" /> 

.net默认只能传4M的文件,所以尽管设定了Wcf两端的配置,还是超不出.net的限定,所以如果要传输大文件,还需要在System.Web节下加上

<httpRuntimemaxRequestLength="102400" />

 

Jaryleely | 园豆:367 (菜鸟二级) | 2016-03-09 08:59

@Jaryleely: 谢谢Jaryleely再次指点,这个是用的winform承载的host,走的是nettcp绑定的,应该不是网站的问题,Server端就收数据刚开始的时候响应速度还行,时间长了就不行了,真是奇怪了

拜门求学 | 园豆:159 (初学一级) | 2016-03-09 14:15

我要结贴了,再次感谢Jaryleely的热心帮助,问题的原因我找到了,写下来为以后的兄弟们参考,原因是我数据存到Server端以后又用了一个线程把数据挪到另外一个内存缓存中,按理说只是多占些内存而已不应该影响接收请求的速度啊,其实想来想去除了多占了很多内存以外还多开了好几个线程,而且伴有大量的内存到文件的IO写入写出,就这样造成了线程开启的延迟,其实WCF的一次请求也是开启一个线程响应的,这是我这次总结出来的,如果有不准确的地方希望兄弟们给指正,再次感谢

拜门求学 | 园豆:159 (初学一级) | 2016-03-10 10:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册