与简单的文件请求相比,您期望 Web 服务请求的响应时间开销是多少?

Posted

技术标签:

【中文标题】与简单的文件请求相比,您期望 Web 服务请求的响应时间开销是多少?【英文标题】:What response time overhead would you expect for a webservice request compared to a simple file request? 【发布时间】:2010-11-05 11:36:49 【问题描述】:

我正在开发一个 asp.net webservice 应用程序,以向使用 jQuery.ajax 发出请求的小部件提供 json 格式的数据。我一直在使用 FireBug Net 视图来检查数据请求需要多长时间。

在我最初的原型中,我只是简单地请求静态 json 数据文件,这些文件在我的开发机器上显然很快就被 IIS 返回了 - 大约 2 到 5 毫秒,即使浏览器的缓存中不存在。

现在我已连接到网络服务,我担心数据请求太慢,因为它们始终需要大约 200 毫秒才能返回。 (这甚至是在第一个请求明显编译内容并花费大约 6 秒的时间之后。)我已经从 Web 请求中删除了所有数据库/处理开销,因此处理时间应该很短,而且这也仍在进行中本地开发机器,因此没有网络延迟。发布版本和生产服务器上的开销并没有更好。

我的问题是:

这个大约 200 毫秒的响应时间是我可以从仅返回“Hello World”的 .net Web 服务中获得的最佳响应时间吗?如果可以做得更好,那么我到底做错了什么?如果不可能,你会怎么做?

【问题讨论】:

【参考方案1】:

如果它在连接数据库等方面真的没有做任何事情,那么您应该能够获得更好的响应时间,即 200 毫秒。

如果您在 服务器 端而不是客户端测量时间,您会看到什么?您是否尝试过使用 WireShark 查看网络中发生的情况?

基本上,您希望能够尽可能准确地创建时间线,显示客户端何时发送请求、何时请求到达服务器、您的服务器端代码何时收到请求、您的服务器端代码何时完成处理请求,服务器实际发送响应的时间,以及客户端实际收到响应的时间。

到那时你就可以找出瓶颈在哪里了。

【讨论】:

感谢 WireShark 的提示,我以前没有使用过。这显示了请求到达服务器和响应离开它的端口之间的时间大约需要 170 毫秒,所以这绝对是其中最大的一部分。我的 Web 服务器代码根本不做任何处理,只是直接将一个字符串参数返回给客户端。 嗯。这不好。您可能可以在该过程中添加更多的日志记录,以便您可以看到其余时间的去向。如果您执行 ASP.NET 非 Web 服务调用(例如,直接调用自定义处理程序)会发生什么? 我刚刚尝试了一个自定义处理程序调用 - 它只是同样的缓慢。哦,好吧...我的替代解决方案是让正在写入数据的 Web 服务调用实际上将 json 文件写入磁盘以供稍后提供。 (该站点的读取次数将多于写入次数。)您已经回答了我问题的主要部分 - 它应该比这更快。 我不明白如何将 Web 服务调用写入磁盘会真正加快速度 - 听起来这是一个固定的延迟,因为只是收到请求,而不是问题需要多少工作来处理它。或者你的意思是你会让AJAX“一劳永逸”,这样延迟就不是什么大问题了?我确实想知道那段时间会去哪里...您可能需要运行一些 SysInternals 工具来确定 IIS 是否正在执行诸如需要很长时间的反向 DNS 查找之类的操作。 好的 - 我想我到了某个地方。我的 Web 服务位于更大的 asp.net 应用程序的子目录中。在单独的服务器中将 Web 服务剥离到它的基本部分,并且响应时间缩短到 10-12 毫秒,正如我所希望的那样。感谢您确认他们应该走得更快 - 我几乎放弃了进一步尝试的意愿。现在我只需要获得同意单独服务器的权力...

以上是关于与简单的文件请求相比,您期望 Web 服务请求的响应时间开销是多少?的主要内容,如果未能解决你的问题,请参考以下文章

上海岳城科技一个简单的Ajax请求例子

代理的基本原理

文件重新加载后台线程与基于请求

与 http 请求相比,一劳永逸

小迪安全web学习笔记

grpc 完成异步 java 服务请求/响应映射