前提:
.net版本: .net framework 4.5.2(服务端),.net framework 3.5(客户端)
服务器:8核E5420 2.5GHZ,16G内存,1万转HDD磁盘
windows版本:windows server 2008(服务端), windows server 2012(客户端)
host: windows service(服务端), IIS(客户端)
配置:
throttling: maxConcurrentCalls="10000" maxConcurrentSessions="10000" maxConcurrentInstances="20000",
binding: basichttpbinding
behavior:InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Multiple, UseSynchronizationContext = false
operation: 默认operation
已经经过的调优:TCPIP连接数、userport限制,客户端http最大连接数限制,客户端channelfactory缓存等能搜到的各种调优方式
延迟表现:
使用loadrunner对客户端进行2000 vusers、3个客户端并发的压力测试,同时在客户端和服务端的业务执行方法前后添加日志、对客户端和服务端网络进行抓包分析。经过分析发现高并发时客户端偶尔出现代码调用请求后,请求没有立即发出,而是延迟了200ms左右才发出请求的现象,而服务端经常出现接收请求没有立即调用,接收消息到执行调用间也存在300ms左右延迟的现象。
如图:表现:https://imgchr.com/i/CbQSeI 分析过程:https://imgchr.com/i/CblDU0(免费图床,新人不让发图请见谅)
问题:
请问是否存在什么优化方式可以降低或去掉如上面所说的延迟时间,提高并发数、降低响应时间;
是否WCF框架在同步调用时已经达到了框架的性能上限(带业务代码每秒1800左右点击数)?