【问题标题】:Pushing OR Polling推送或轮询
【发布时间】:2011-03-23 15:27:28
【问题描述】:

我有一个 SL 客户端和一个 WCF 服务。客户端每 4 秒轮询一次 WCF,我一次有近 100 个客户端。

Web 服务器是具有 512 MB RAM 的入门级服务器。

我想知道,如果轮询依赖于服务器配置,如果我增加服务器配置,客户端的轮询会更好吗?

其次,推送(双工)会比轮询更好吗?我在阅读的博客中得到了一些不同的反应。

此外,优化轮询以加快客户端响应的最佳做法是什么?我的应用程序需要实时数据

谢谢

【问题讨论】:

  • 您遇到了什么问题? WCF 服务是否在合理的时间内没有响应? 4 秒(+响应时间)还不够“实时”吗?
  • 问题 - 让我们谈谈 100 个客户。每个人都会在 4 秒间隔后进行轮询。现在,让我们随机选择 poll_no - 客户端应该接收一些数据。我的一些客户收到了,有些没有。下一次投票,其他一些客户收到,而另一组没有!
  • WCF 服务有什么作用?它是计算密集型的还是 IO 密集型的(或者是长时间运行的?)它是调用数据库还是做一些进程外的事情?听起来您的服务中存在问题,无论是服务过载还是其他失败;轮询本身不是问题。如果您针对该服务运行 10 个客户端,它们每次都会得到响应吗?
  • WCF 提供计算服务,没有数据库通信。 WCF 将 XML 作为字符串发送给客户端。由于客户数量较少,它运行良好。

标签: c# .net silverlight wcf


【解决方案1】:

我的猜测是您有某种竞态条件,它只出现在大量客户中。您为 WCF 服务使用了哪些并发和实例化模式? (请参阅 MSDN:WCF 会话、实例化和并发,http://msdn.microsoft.com/en-us/library/ms731193.aspx

如果您“丢失”响应,我要做的第一件事就是开始记录或跟踪服务器上发生的事情。例如,当客户端“没有看到”响应时,服务器是否会收到请求? (如果是这样,它会发生什么,等等)

我还会关注内存使用情况——你没有说你使用的是什么操作系统,但现在 512 MB 非常小。如果您遇到交换到磁盘的情况,这显然不是一件好事。

最后,假设您的服务受 CPU 限制(即没有繁重的数据库和文件系统调用),提高吞吐量的最佳方法可能是减少消息负载(线路大小),使用最高性能的绑定(即如果客户端是 .NET 并且您控制它,NetTcp 绑定比 HTTP 快得多),当然还有多线程您的服务。恕我直言,根据您提供的信息——以及所有其他条件相同的信息——轮询可能没问题,而推送可能只会让事情变得更复杂。如果它很重要,您真的想为问题带来真正的工程方法并识别/测量您的瓶颈。

希望这会有所帮助!

【讨论】:

  • 感谢您的解释。我正在使用 Windows 操作系统。我的客户是 SL 客户,所以我怀疑我是否对绑定有任何灵活性。您认为增加 RAM 会带来更好的性能吗?
  • “Windows 操作系统”将其缩小到大约十几个选择... ;-) 2000 年? 2003 年?经验?赢7?您将不得不查看任务管理器或性能计数器以查看正在使用多少内存。周围有很多资源可以帮助您。 SilverLight 是一项 MS 技术,因此在绑定方面您可能有选择 - 取决于客户端开发团队如何解析您的 WCF 服务端点(生成的代理 - 更难更改绑定,或配置文件 - 易于更改) .但是您确实需要首先修复丢失的响应,然后找出您的瓶颈。
  • 它的服务器'03。好吧,好吧。我会检查任务管理器。具体来说,我可以监控服务器上的每个线程的性能吗?
  • 使用 2003 等相当现代的操作系统,您可以衡量流程的大部分方面。您是否确定了 WCF 服务的实例化和并发设置?这可能会影响性能,以及您改进性能的选择。
  • 是的,我检查了您提供的链接中的内容。很有帮助!
【解决方案2】:

“推送”通知通常具有较低的网络开销,因为没有通信时不会发送流量。但是“拉”通知通常具有较低的应用程序开销,因为当客户端只是空闲等待通知时,您不必维护状态。

推送通知也往往“更快”,因为客户端会在事件发生时立即收到通知,而不是等待下一个轮询间隔。但是拉取通知更加灵活——您可以使用几乎任何您想要的服务器或协议,并且只需将轮询等待间隔加倍,您就可以将客户端容量加倍。

【讨论】:

  • 我一直在想这种事情。您是否知道任何讨论各自优缺点的链接?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多