【问题标题】:WCF slow to return one object but not the otherWCF 缓慢返回一个对象但不返回另一个
【发布时间】:2014-02-22 01:09:58
【问题描述】:

我有一项服务在 IIS 下运行。我正在测试 2 种不同的数据收集方法,看看哪种方法最适合我们。服务类有 2 种方法,它们使用相同的对象但有 2 种不同的方法来查询数据。一种是 linq to sql,另一种是使用 3rd 方网络服务。在我的服务中,这两种方法各自在大约 7 秒内获取数据。他们正在加载同一个对象,他们在服务的同一个类中。 在客户端上,我使用该服务填充网格,一个在 0.18 秒内从服务中获取数据,另一个需要 31.6 秒。由于这两种方法在服务中的工作时间相同,为什么客户端会出现巨大的差异? 以下是客户端中对服务的调用:

这个需要 31.6 秒:

var watch = Stopwatch.StartNew();
courseOfferingsSyn = clientsyn.GetCoursesOffered_SynergyService(SchoolDD.SelectedItem.ToString(), schoolYear,     TermCodeDD.SelectedValue).ToList();
var test = watch.Elapsed.TotalSeconds;
Console.Write(test);

这需要 0.188 秒:

var watch = Stopwatch.StartNew();
courseOfferings = client.GetCoursesOffered(SchoolDD.SelectedValue, schoolYear, TermCodeDD.SelectedValue).ToList();
var test = watch.Elapsed.TotalSeconds;
Console.Write(test);

两者的唯一区别是一个查询想要学校代码,另一个想要学校名称。

哦,还有绑定(都用同一个):

    <binding name="BasicHttpBinding_CourseService" allowCookies="true" maxReceivedMessageSize="20000000" maxBufferSize="20000000" maxBufferPoolSize="20000000">
      <readerQuotas maxDepth="32" maxArrayLength="200000000" maxStringContentLength="200000000"/>
    </binding>

有人对我什至可以寻找什么有任何想法吗?我被难住了。

【问题讨论】:

  • 您的客户端在同一台机器上吗?会不会只是网络延迟?尝试过多次试验?
  • 客户端在不同的机器上。不是网络延迟,因为一个非常快,另一个非常慢。从同一个服务调用相同的数据。
  • 速度测试的代码不如方法实现有价值。能否包含指定 WCF 服务的方法实现?
  • 每次运行客户端都是这样吗?尝试 Fiddler 分析以原始格式返回的数据。
  • 我可以,它们有点长。但是我对它们都进行了计时,它们每个都在大约 7 秒内完成。但是等等——我在本地机器上测试了服务,但是客户端在服务发布到服务器后调用了它。这可能很重要..

标签: c# wcf performance-testing


【解决方案1】:

在我看来,后端数据库缺少索引,这迫使数据库搜索表中的所有记录。这是我能想到的唯一原因,为什么一个电话会很快,而另一个电话会很慢......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    相关资源
    最近更新 更多