我在win 2008服务器(4核心)上使用部署在IIS 8中的WCF 4。 我的所有服务都使用 instancemode,concurrencymode 和限制值的默认参数。
Multiples应用程序(70个客户端)每10秒调用一次操作(getStatusData),该操作应返回一小部分结果(1 kb)。 这是一个通过轮询来保持客户端更新的预定呼叫...
在服务器端的服务应用程序日志中,我可以看到有时服务器需要花费超过30秒的时间来回答(因为它在响应中间被阻止了......)
最近我对我的服务进行了loadbalanced并将Redis用作分布式缓存。 从那时起,我的所有客户端都报告了一个缓慢的行为,并且操作getStatusData现在正在服务器端完成超过3分钟,导致客户端异常超时。
我已经改变了应用程序行为,以便每2分钟调用一次这个操作,看起来我回到了原来的状态:操作有时需要30秒才能实现...
我想知道为什么我会观察到这种行为,以便每10秒钟再次轮询(2分钟数据太旧)并加快我的服务速度。
添加信息:
为了提供有关可能的瓶颈的更多信息,我在运行缓慢时运行了我的进程转储,这里有关于线程池信息的信息:
0:000> !threadpool
CPU utilization: 24%
Worker Thread: Total: 28 Running: 0 Idle: 28 MaxLimit: 8191 MinLimit: 8
Work Request in Queue: 0
--------------------------------------
Number of Timers: 2
--------------------------------------
Completion Port Thread:Total: 80 Free: 4 MaxFree: 16 CurrentLimit: 80 MaxLimit: 1000 MinLimit: 8
你对这里发生的事情有任何想法吗?