【问题标题】:performance issue with WCF data servicesWCF 数据服务的性能问题
【发布时间】:2012-07-31 11:33:10
【问题描述】:

我是 WCF 数据服务的新手。我使用 ADO .NET 实体框架在 WCF 数据服务上创建了一个示例 POC。

当我通过添加 WCF 数据服务作为服务引用(1000 行的简单选择语句)通过测试项目测试数据服务时,大约需要 25 秒。 在 25 秒中,从数据库查询数据只用了 5 秒(在分析数据库后得到此信息)。

奇怪的是,WCF 数据服务仅用于翻译和传输就需要大约 20 秒。

知道为什么翻译和运输要花这么多时间吗?

【问题讨论】:

  • 我们需要更多详细信息才能在此问题上取得任何进展 - 如您所见,这些 URL 返回 500 个实体并在 odata.netflix.com/Catalog/Titles 和 odata.netflix.com/Catalog/Titles?$format=json。最大的决定因素应该是电线尺寸。这些有效载荷的大小只有几兆。你能告诉我们更多细节吗?
  • 我正在使用预加载来预先获取导航属性。所以线路上的总大小约为 105MB.so,这 105MB 是否在增加 20 秒的开销中起作用,或者是否有任何其他原因可能导致这种情况,因为我使用同一台机器作为托管服务和测试客户端,负载大小是否会添加这样在这种情况下会产生巨大的影响吗?
  • 这很可能是问题所在 - 105MB 在网络上是巨大的。您应该只急切加载实际将在同一屏幕上显示的内容。这里是这样吗?您真的需要所有 1000 条记录和扩展数据吗?你能告诉我们更多关于你的用例吗?
  • @MarkStafford-MSFT - 是的,我不会在 UI 上使用整组数据。因此,实体列表的延迟加载和特定实体的急切加载可以大大提高性能。感谢您的宝贵意见:)

标签: performance wcf-data-services


【解决方案1】:

您的数据太大了。

通过网络传输比从数据库中获取数据慢几倍是绝对正常的,至少当查询包含比复杂的窄过滤更多的批量获取时,并且在数据库上没有重大性能问题时一边。

20 秒内 100 MB = 40 Mbps,这将非常接近 100 Mbps 以太网的硬件限制,因为 ~100 MB 只是有效负载。

【讨论】: