我的猜测是,您有某种竞争条件,只有大量客户才会出现。您的 WCF 服务使用什么并发和实例模式?(请参阅 MSDN:WCF 会话、实例化和并发,网址为http://msdn.microsoft.com/en-us/library/ms731193.aspx)
如果您“丢失”响应,我要做的第一件事就是开始记录或跟踪服务器上发生的情况。例如,当客户端“看不到”响应时,服务器是否收到了请求?(如果是这样,会发生什么,等等)
我还会密切关注内存使用情况——你不会说你正在使用什么操作系统,但现在 512 MB 实在是太少了。如果您遇到交换到磁盘的情况,这显然不是一件好事。
最后,假设您的服务受 CPU 限制(即没有繁重的数据库和文件系统调用),提高吞吐量的最佳方法可能是减少消息负载(线路大小),使用性能最高的绑定(即,如果客户端是 . NET 并且您可以控制它,NetTcp 绑定比 HTTP 快得多),当然还有多线程您的服务。恕我直言,根据您提供的信息 - 在所有其他条件相同的情况下 - 轮询可能没问题,而推送可能只会使事情变得更加复杂。如果它很重要,您确实希望采用真正的工程方法来解决问题并识别/测量您的瓶颈。
希望这可以帮助!
归档时间: |
|
查看次数: |
1277 次 |
最近记录: |