【发布时间】: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