ASP.Net Web 服务响应时间慢
Posted
技术标签:
【中文标题】ASP.Net Web 服务响应时间慢【英文标题】:ASP.Net Web Services Response Time Slow 【发布时间】:2011-05-18 11:29:24 【问题描述】:我们正在使用 ASP.Net Web 服务。
架构是 在 .Net 3.5 中开发的基于桌面的应用程序 - 客户端应用程序(客户端机器) .Net 3.5 中基于 ASP.Net 的 Web 服务 - 业务逻辑层(服务器上的 IIS) SQL 2005 数据库 - 数据库层(与 IIS 相同或不同的服务器)
该应用程序几乎已开发完毕,即将进行首次实施。 在第 1 天,我们遇到了阻碍问题。 我们已经加载了 30000 条记录的患者数据库,患者搜索屏幕的响应时间超过 20 秒。 我们已索引数据库并删除了所有不必要的调用 一种。从客户端到 Web 服务 湾。从 Web 服务到数据库。 响应时间仍然是 7 秒,这是不可接受的,它必须低于 3 秒。 我们看到的主要问题是 4 秒被用作 Web 服务通过网络向客户端返回如此大小的数据的一部分。
解决办法是什么?
【问题讨论】:
json 和压缩可能对你有帮助 【参考方案1】:如果您的搜索查询返回大型结果集,您可以考虑将分页功能添加到 Web 服务调用中。
用户似乎不太可能一眼就查看 250 名(或任意数量 > 10 名)患者。因此,您可以以 10 个一组的形式返回它们,而不是返回所有 250 个的方法。不过,您必须稍微更改 Web 方法的签名。
这将减少网络负载。
您可以将搜索结果缓存在服务器上,以避免过于频繁地运行昂贵的查询。
这可能是解决方案的一部分,但可能还有许多其他选择!
祝你好运!
【讨论】:
我认为这是唯一好的解决方案。除此之外:它有助于通过仅发送真正需要的内容来减少您传输的数据的大小。这样做的缺点是你的后端需要知道你的前端必须知道什么——这是不好的风格——但它可以大大减少带宽的使用。 可以是一个的解决方案;但它不太可能是唯一好的……对于我们这些外人来说,未知数太多了! ;-)【参考方案2】:确保您的查询可以使用索引。在 SQL Server 中索引表的最简单方法是使用 Sql Server Tuning Wizard。 诊断问题的另一种方法是在服务上添加 Ping 方法。这将使您能够检查网络延迟。 您还可以使用 Cache 对象缓存常用记录。 sql server 的 30000 行还不到整个海洋的一滴水:)
【讨论】:
【参考方案3】:确保您只返回对客户真正有用的数据。使用 Web 服务很容易只返回数据库中的大型数据集。如果速度确实是一个高优先级,那么您应该尽可能地减少返回给客户端计算机的信息量,使其仅对您正在执行的任何操作立即必要。
您可以设置一些通过 Web 服务传递的代理/数据合同对象,这些对象仅包含特定于正在进行的 Web 服务调用的信息。一个简单的例子是只返回一个人的名字,而不是返回他们的名字、地址、电话号码等。
【讨论】:
【参考方案4】:如果您的问题确实是通过网络发送的数据量。除了减少数据量之外,您几乎没有其他选择。正如 Scotty 在他改变物理定律之前所说的“Capin,我可以改变物理定律”;)
通过 z 速度数据链路传输 y 字节数据需要 x 时间。
如何减少这些数据很大程度上取决于您的情况。您可以使用压缩,这可能会或可能不会获得任何东西,具体取决于数据的构成,但主要基于 XML,您应该会从中获得相当不错的改进。
您还可以一次传输较少数量的记录,或使用延迟加载仅在需要时加载数据子集。
当然,如果您在只需要 3 个字段的情况下传输整个表,那也会大大增加数据的大小。确保您只传输您需要的数据。
【讨论】:
以上是关于ASP.Net Web 服务响应时间慢的主要内容,如果未能解决你的问题,请参考以下文章
如何使用jQuery调用带有参数的asp.net asmx web服务来获取响应
ASP.NET Web API 记录请求响应数据到日志的一个方法
ASP.NET Web API 记录请求响应数据到日志的一个方法